0%

LeetCode-92

题目

92. 反转链表 II

结果

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func reverseBetween(head *ListNode, left int, right int) *ListNode {
var pre *ListNode
ptr := head
for i := 0; i < left-1; i++ {
if i == left-2 {
pre = ptr
}
ptr = ptr.Next
}

var stack []*ListNode
for i := 0; i <= right-left; i++ {
stack = append(stack, ptr)
ptr = ptr.Next
}
for i := range stack {
if i != 0 {
stack[i].Next = stack[i-1]
}
}
if pre != nil {
pre.Next = stack[len(stack)-1]
} else {
head = stack[len(stack)-1]
}
stack[0].Next = ptr
return head
}

复杂度

时间复杂度:O(n)

空间复杂度:O(n)