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

92. 反转链表 II

时间:2019-11-02 00:26:52      阅读:75      评论:0      收藏:0      [点我收藏+]

标签:OWIN   style   描述   nbsp   ebe   nod   错误   节点   sel   

题目描述:

Reverse a linked list from position m to n.
Do it in-place and in one-pass.
For example:
Given 1->2->3->4->5->NULL, m = 2 and n = 4,

return 1->4->3->2->5->NULL.

Note:
Given m, n satisfy the following condition:
1 ≤ m ≤ n ≤ length of list.

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  */

 

代码:

 1 class Solution {
 2 public:
 3     ListNode *reverseBetween(ListNode *head, int m, int n) {
 4                            //短路原则
 5         if(head==nullptr || m>=n || n<1)
 6             return head;
 7         ListNode dummy = ListNode(-1);
 8         dummy.next = head;
 9         ListNode *pre = nullptr;
10         ListNode *p = &dummy;
11         int cnt = 0;//由于这里是从左往右的第几个节点,所以直接数出来就可以了
12         //每遇到一个非空节点,更新一下计数值
13         //按照前进步数的方法在m=1时不用走就到达了,会出现错误
14         while(p!=nullptr)
15         {   
16             cnt++;
17             if(cnt == m)
18                pre = p;
19             if(cnt == n+1)
20                break;   
21             p = p->next;
22         } 
23         if(p==nullptr)
24             return head;
25         ListNode *next = p->next;
26         p->next = nullptr;
27         ListNode *cur = pre->next;
28         pre->next = nullptr;
29         pre->next = reverseList(cur);
30         cur->next = next;
31         return dummy.next;       
32     }
33 
34     ListNode *reverseList(ListNode *head)
35     {
36         if(head==nullptr || head->next==nullptr)
37             return head;
38         ListNode *last = nullptr;
39         ListNode *cur = head;
40         while(cur!=nullptr)
41         {
42             ListNode * temp = cur->next;
43             cur->next = last;
44             last = cur;
45             cur = temp;
46         }
47         return last;
48 
49     }
50 
51 };

 

92. 反转链表 II

标签:OWIN   style   描述   nbsp   ebe   nod   错误   节点   sel   

原文地址:https://www.cnblogs.com/zjuhaohaoxuexi/p/11780106.html

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