Loading... 中间那部分反转实际上就比较简单,操作 right-left+1次即可,而前边的left可能是1,所以这里需要构建一个dummy头来避免一些问题即可。 ```go /** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */ func reverseBetween(head *ListNode, left int, right int) *ListNode { dummy := &ListNode{Next: head} prev := dummy for i := 1; i < left; i++ { prev = prev.Next } var p1 *ListNode p2 := prev.Next for i := 0; i <= right-left; i++ { tmp := p2.Next p2.Next = p1 p1 = p2 p2 = tmp } prev.Next.Next = p2 prev.Next = p1 return dummy.Next } ``` Last modification:July 9, 2025 © Allow specification reprint Support Appreciate the author AliPayWeChat Like 如果觉得我的文章对你有用,请随意赞赏