Rotate List
2014-04-22 04:06
120 查看
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.
Solution: Notice that k can be larger than the list size (k % list_size).
This solution traverses the list twice at most.
For example:
Given 1->2->3->4->5->NULL and k = 2,
return 4->5->1->2->3->NULL.
Solution: Notice that k can be larger than the list size (k % list_size).
This solution traverses the list twice at most.
/** * 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* tail = head; int counter = 1; while(tail->next) { tail = tail->next; counter++; } k = k % counter; // in case the list rotates more than one round if(k == 0) return head; ListNode* cur = head; for(int i = 0; i < counter - k - 1; i++) cur = cur->next; ListNode* newHead = cur->next; cur->next = NULL; tail->next = head; return newHead; } };
相关文章推荐
- [leetcode] Rotate List
- LeetCode_Rotate List
- Rotate List
- 【LeetCode】Rotate List
- Rotate List
- Rotate List
- Rotate List
- LeedCode:Rotate List
- leetcode: Rotate List
- lintcode-medium-Rotate List
- leetcode 61.Rotate List
- 61. Rotate List
- 【LeetCode】61. Rotate List
- 【Leetcode】61. Rotate List
- [Leetcode] Rotate List
- LeetCode 61: Rotate List
- Rotate List
- Leetcode: Rotate List
- Leetcode | Rotate List
- Leetcode NO.61 Rotate List