LeetCode | Rotate List
2013-12-10 16:04
169 查看
题目:
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->NULLand k =
2,
return
4->5->1->2->3->NULL.
思路:
首先计算出链表元素个数,然后利用k mod 元素个数,求出实际需要的右移动次数。最后通过快慢指针来实现右移。
代码:
/** * 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==NULL) { return NULL; } if(k<=0) { return head; } ListNode*p=head; int count=0; while(p!=NULL) { p=p->next; count++; } k=k%count; ListNode*slow=head; ListNode*fast=head; for(int i=0;i<k;i++) { if(fast->next==NULL) { break; } fast=fast->next; } while(fast->next!=NULL) { slow=slow->next; fast=fast->next; } fast->next=head; head=slow->next; slow->next=NULL; return head; } };
相关文章推荐
- LeetCode 61 Rotate List
- LeetCode(61) Rotate List
- 【LeetCode】Rotate List
- LeetCode | Rotate List
- leetcode 61:Rotate List
- 【LeetCode】Rotate List
- LeetCode: Rotate List
- LeetCode_Rotate List
- LeetCode - Refresh - Rotate List
- [leetcode]Rotate List
- Leetcode NO.61 Rotate List
- 43 leetcode - Rotate List
- Rotate List - LeetCode 62
- LeetCode - Rotate List
- leetcode:Rotate List
- leetcode_061 Rotate List
- leetcode Rotate list
- 【leetcode刷题笔记】Rotate List
- leetcode -- Rotate List
- Leetcode | Rotate List