Rotate List
Posted hujianglang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rotate 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
.
struct ListNode int m_nKey; ListNode* next; class Solution public: ListNode* rotateRight(ListNode *head, int k) if(!head) return NULL; int n = 0; ListNode *cur = head; while(cur) ++n; cur = cur->next; k %= n; ListNode *fast = head, *slow = head; 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; ;
以上是关于Rotate List的主要内容,如果未能解决你的问题,请参考以下文章