LeetCode 61. Rotate List
阿新 • • 發佈:2017-10-06
lac list example val urn log ext des quest
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; } };
LeetCode 61. Rotate List