|
14鱼币
今天LeetCode刷题的时候有个点想不明白,求各路大神帮帮忙:
LeetCode 92.反转链表Ⅱ
def reverseBetween(self, head: ListNode, left: int, right: int) -> ListNode:
# 设置 dummyNode 是这一类问题的一般做法
dummy_node = ListNode(-1)
dummy_node.next = head
pre = dummy_node
for _ in range(left - 1):
pre = pre.next
cur = pre.next
for _ in range(right - left):
next = cur.next
cur.next = next.next
next.next = pre.next # 这里为什么不可以改成next.next = cur?
pre.next = next
return dummy_node.next
我将代码中有注释的那行(next.next = pre.next)改成了(next.next = cur),就出现了图中显示的错误返回,请问为什么会出现这样的错误?求大神指点!
你改成next.next = cur 是只符合第一次翻转时的情况 如例子中的2,3翻转时的情况3->2->4 你在往下考虑一次翻转情况会发现
后面要4->3而不是next.next = cur这样会使得4->2
|
-
修改代码后的错误返回
最佳答案
查看完整内容
你改成next.next = cur 是只符合第一次翻转时的情况 如例子中的2,3翻转时的情况3->2->4 你在往下考虑一次翻转情况会发现
后面要4->3而不是next.next = cur这样会使得4->2
|