File tree 1 file changed +40
-0
lines changed
solution/0092.Reverse Linked List II
1 file changed +40
-0
lines changed Original file line number Diff line number Diff line change
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* reverseBetween (ListNode* head, int m, int n) {
12
+ ListNode headNode (0 ) ;
13
+ headNode.next = head ;
14
+
15
+ n = n-m+1 ;
16
+
17
+ ListNode *p = &headNode ;
18
+ while (--m) // 移动m-1次,故--m
19
+ p = p->next ;
20
+
21
+ ListNode revNode (0 ) ;
22
+ ListNode *pRev = &revNode ;
23
+ pRev->next = nullptr ;
24
+ ListNode *pN = p->next ;
25
+
26
+ ListNode *pTmp ;
27
+ while (n--)
28
+ {
29
+ pTmp = p->next ;
30
+ p->next = p->next ->next ;
31
+ pTmp->next = pRev->next ;
32
+ pRev->next = pTmp ;
33
+ }
34
+
35
+ pN->next = p->next ;
36
+ p->next = revNode.next ;
37
+
38
+ return headNode.next ;
39
+ }
40
+ };
You can’t perform that action at this time.
0 commit comments