61. 旋转链表

2020-07-04  本文已影响0人  来到了没有知识的荒原

61. 旋转链表

双指针,一个先走k步

class Solution {
public:
    ListNode* rotateRight(ListNode* head, int k) {
        ListNode *dummy=new ListNode(0);
        dummy->next=head;
        auto p1=dummy,p2=dummy;
        
        int len=0;
        while(p1->next){
            len++;
            p1=p1->next;
        }
        if(!len)return NULL;
        k%=len;
        if(!k)return head;

        if(len==1)return head;
        while(k--) p2=p2->next;

        p1=dummy;
        while(p2->next){
            p1=p1->next;
            p2=p2->next;
        }
        
        auto res=p1->next;
        p1->next=NULL;
        p2->next=head;
        return res;
    }
};
上一篇下一篇

猜你喜欢

热点阅读