Skip to content

Commit 2c7177c

Browse files
committed
Create Reverse Linked List II
1 parent 5a849cf commit 2c7177c

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

List/Reverse Linked List II

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
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+
};

0 commit comments

Comments
 (0)