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;
}
};
网友评论