S2
S2 copied to clipboard
0092. Reverse Linked List I I | LeetCode Cookbook
https://books.halfrost.com/leetcode/ChapterFour/0001~0099/0092.Reverse-Linked-List-II/
/**
-
Definition for singly-linked list.
-
type ListNode struct {
-
Val int
-
Next *ListNode
-
} */ func reverseBetween(head *ListNode, left int, right int) *ListNode { dummyHead := &ListNode{Next: head} pre := dummyHead
for i := 1; i < left; i++ { pre = pre.Next }
last := pre.Next for i := left; i <= right; i++ { last = last.Next }
pre.Next = reverse(pre.Next, last) if dummyHead.Next == head { return head } return pre.Next }
func reverse(first *ListNode, last *ListNode) *ListNode { pre, p := first, first.Next
pre.Next = last
for p != last {
tmp := pre
pre = p
p = p.Next
pre.Next = tmp
}
return pre
}