LeetCode 92 反转链表2

反转链表2

反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。

说明:
1 ≤ m ≤ n ≤ 链表长度。

示例:

输入: 1->2->3->4->5->NULL, m = 2, n = 4
输出: 1->4->3->2->5->NULL

思路·

在这里插入图片描述

class Solution {
    
    
public:
    ListNode* reverseBetween(ListNode* head, int m, int n) {
    
    
        ListNode*Node=head;
        ListNode*left=NULL;
        ListNode*right=NULL;
        ListNode*left0,*Node0;
        int a=1;
       while(Node!=NULL&&a<=n)
       {
    
    
           if(a==m)
           {
    
    
               left0=left;
               Node0=Node;
           }
           if(a>m&&a<=n)
           {
    
    
               right=Node->next;
               Node->next=left;
               left=Node;
               Node=right;
           }
           else{
    
    
               
               left=Node;
               Node=Node->next;
           }
           ++a;
       }
       if(left0==NULL)  head=left;
       else left0->next=left;
       Node0->next=Node;
       return head;
       
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_42076938/article/details/107661590