File tree Expand file tree Collapse file tree 1 file changed +49
-0
lines changed Expand file tree Collapse file tree 1 file changed +49
-0
lines changed Original file line number Diff line number Diff line change
1
+ // t题目比较繁琐,但是还好没有出差错,出现了一点小的失误,但是。。时间上超标。。15分钟。。太短了,我有半个多小时了。。
2
+
3
+ class Solution {
4
+ public:
5
+ ListNode *reverseBetween(ListNode *head, int m, int n) {
6
+ ListNode *newHead = new ListNode(INT_MIN);
7
+ newHead->next = head;
8
+ ListNode * nodeM = nullptr,*preM = newHead ;
9
+ ListNode * nodeN = nullptr,*postN = nullptr;
10
+ ListNode *p = head,*pre = newHead;
11
+ int len = 0;
12
+ while(p)
13
+ {
14
+ len++;
15
+ if(len == m)
16
+ {
17
+ nodeM = p;
18
+ preM = pre;
19
+ }
20
+ if(len == n)
21
+ {
22
+ nodeN = p;
23
+ postN = p->next;
24
+ break;
25
+ }
26
+ pre = p;
27
+ p = p->next;
28
+
29
+ }
30
+ if(m < n)
31
+ {
32
+ p = nodeM->next;
33
+ pre = nodeM;
34
+ preM->next = nodeN;
35
+ nodeM->next = nullptr;
36
+ while (p != nodeN)
37
+ {
38
+ ListNode *tempNode = p->next;
39
+ p->next = pre;
40
+ pre = p;
41
+ p = tempNode;
42
+ }
43
+ p->next = pre;
44
+ nodeM->next = postN;
45
+ }
46
+ return newHead->next;
47
+
48
+ }
49
+ };
You can’t perform that action at this time.
0 commit comments