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

61. 旋转链表

时间:2020-03-20 10:48:21      阅读:55      评论:0      收藏:0      [点我收藏+]

标签:step   负数   link   nbsp   直接   返回   str   return   val   

 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 {
11 public:
12     ListNode* rotateRight(ListNode* head, int k) 
13     {
14         //k为非负数,即0和正数
15         //如果k为0或者head为空,则直接返回head
16         if(k == 0 || head == NULL) return head;
17         int len = 0;
18         ListNode *p = head;
19         while(p) len++,p = p->next;//求链表的长度
20 
21         k %= len;//求模
22         if(k == 0) return head;//如果这个模值为0,则直接返回head
23         
24         ListNode* dummy = new ListNode(-1);//建立一个虚拟节点
25         dummy->next = head;
26 
27         ListNode* p1 = dummy;
28         ListNode* p2 = head;
29         int step = len - k;
30         while(step-- && p1 && p2) p1 = p1->next,p2 = p2->next;
31 
32         ListNode* p3 = head;
33         while(p3->next) p3 = p3->next;
34 
35         p3->next = head,p1->next = NULL;//连接旋转链表
36         return p2;
37     }
38 };

 

61. 旋转链表

标签:step   负数   link   nbsp   直接   返回   str   return   val   

原文地址:https://www.cnblogs.com/yuhong1103/p/12530081.html

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