原题
https://leetcode.cn/problems/reverse-linked-list-ii/description/
思路
双指针
复杂度
时间:O(n)
空间:O(1)
Python代码
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution(object):
def reverseBetween(self, head, left, right):
"""
:type head: Optional[ListNode]
:type left: int
:type right: int
:rtype: Optional[ListNode]
"""
dummy = pre = ListNode(0, head)
for i in range(left - 1):
pre = pre.next
cur = pre.next
for j in range(left, right):
temp = cur.next
cur.next = temp.next
temp.next = pre.next
pre.next = temp
return dummy.next
Go代码
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func reverseBetween(head *ListNode, left int, right int) *ListNode {
dummy := &ListNode{0, head}
pre := dummy
for i := 0; i < left-1; i++ {
pre = pre.Next
}
cur := pre.Next
for j := left; j < right; j++ {
temp := cur.Next
cur.Next = temp.Next
temp.Next = pre.Next
pre.Next = temp
}
return dummy.Next
}
422

被折叠的 条评论
为什么被折叠?



