您的位置:首页 > 其它

4.29 leetcode -29 rotate-list

2017-08-31 14:43 330 查看
题目描述

Given a list, rotate the list to the right by k places, where k is non-negative.

For example:

Given1->2->3->4->5->NULLand k =2,

return4->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) {
ListNode *pToEnd = head;
ListNode *pNewEnd = head;
ListNode *pNewHead;
if(head == NULL)
return NULL;
int i = 0;
for(; i < k ;i ++)
{
if(pToEnd->next == NULL)//k大于链表长度的话
pToEnd = head;
else
pToEnd = pToEnd->next;

}

while(pToEnd->next != NULL)
{
pToEnd = pToEnd->next;
pNewEnd = pNewEnd->next;
}
pToEnd->next = head;
pNewHead = pNewEnd->next;
pNewEnd->next = NULL;
return pNewHead;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode