码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode:Rotate List

时间:2015-08-04 11:06:39      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:

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.

 
 思路:先遍历一遍,得出链表长度,注意k可能大于len令k%=len,将尾节点next指针指向首节点,形成一个环 ,然后接着跑len-k步, 从这里断开,就是要求的结果。
 1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     ListNode *next;
 6  *     ListNode(int x) : val(x), next(NULL) {}
 7  * };
 8  */
 9 class Solution {
10 public:
11     ListNode* rotateRight(ListNode* head, int k) {
12         if(head==NULL || k==0) return head;
13         
14         int len=1;
15         ListNode *p=head;
16         while(p->next)
17         {
18             len++;
19             p=p->next;
20         }
21         
22         int step=len-k%len;
23         
24         p->next=head;//尾节点next指针指向首节点
25         //向后走step步 然后断开
26         
27         for(int i=0;i<step;i++)
28             p=p->next;
29         
30         head=p->next;
31         p->next=NULL;
32         
33         return head;
34     }
35 };

 

LeetCode:Rotate List

标签:

原文地址:http://www.cnblogs.com/xiaoying1245970347/p/4701274.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!