题目:
Given a list, rotate the list to the right by k places, where k is non-negative.
For example:
Given1->2->3->4->5->NULLand k =2,
return4->5->1->2->3->NULL.
程序:
class Solution {
public:
ListNode *rotateRight(ListNode *head, int k)
{
if(head==nullptr || k<=0)
return head;
ListNode *p=head;
int len = 0;
while(p)
{
++len;
p = p->next;
}
k = k%len;//k可能大于len
if(k==0) return head;
ListNode *fast = head,*slow = head;
for(int i=0;i<k;i++)
fast = fast->next;
while(fast->next)
{
slow = slow->next;
fast = fast->next;
}
ListNode *newHead = slow->next;
slow->next = nullptr;
fast->next = head;
return newHead;
}
};