Rotate List
2016-08-06 07:43
204 查看
Given a list, rotate the list to the right by k places, where k is non-negative.
For example:
Given
return
Runtime: 12ms.
For example:
Given
1->2->3->4->5->NULLand k =
2,
return
4->5->1->2->3->NULL.
Runtime: 12ms.
/** * 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 || !head->next) return head; // first find the (n - k % n)th element ListNode* move = head; int count = 1; while(move->next) { count++; move = move->next; } ListNode* endNode = move; k %= count; move = head; int index = 0; while(index++ < k) move = move->next; ListNode* current = head; while(move->next) { move = move->next; current = current->next; } endNode->next = head; head = current->next; current->next = NULL; return head; } };
相关文章推荐
- LeetCode: Rotate List
- [leetcode刷题系列]Rotate List
- Rotate List
- Rotate List
- LeetCode OJ算法题(六十):Rotate List
- Rotate List
- Rotate List
- [LeetCode][Java] Rotate List
- Rotate List
- Leetcode ☞ 61. Rotate List
- LeetCode | Rotate List
- Leetcode-61. Rotate List
- [leetcode]61. Rotate List
- LeetCode刷题(34)-Rotate List
- [Leetcode] Rotate List
- LeetCode-Rotate List
- Rotate List
- Rotate List
- 【LeetCode with Python】 Rotate List
- 【LeetCode】Rotate List