标签:desc code null color bsp question solution ++ list
Given a list, rotate the list to the right by k places, where k is non-negative.
For example:
Given 1->2->3->4->5->NULL
and k = 2
,
return 4->5->1->2->3->NULL
.
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* rotateRight(ListNode* head, int k) { if (!head) return NULL; ListNode *cur = head; int n = 0; while(cur) { cur = cur->next; ++n; } ListNode *slow = head; ListNode *fast = head; k %= n; for (int i = 0; i < k; ++i) { if (fast) fast = fast->next; } if (!fast) return head; while(fast->next) { fast = fast->next; slow = slow->next; } fast->next = head; fast = slow->next; slow->next = NULL; return fast; } };
标签:desc code null color bsp question solution ++ list
原文地址:http://www.cnblogs.com/yuanluo/p/7631973.html