肥果嘟嘟 发表于 2021-8-24 15:39:19

Python链表 - LeetCode 92.反转链表问题求助


今天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),就出现了图中显示的错误返回,请问为什么会出现这样的错误?求大神指点!

lei1996 发表于 2021-8-24 15:39:20

你改成next.next = cur是只符合第一次翻转时的情况 如例子中的2,3翻转时的情况3->2->4你在往下考虑一次翻转情况会发现
后面要4->3而不是next.next = cur这样会使得4->2

肥果嘟嘟 发表于 2021-8-25 09:39:04

lei1996 发表于 2021-8-24 22:02
你改成next.next = cur是只符合第一次翻转时的情况 如例子中的2,3翻转时的情况3->2->4你在往下考虑一次 ...

谢谢大佬,大佬牛逼
页: [1]
查看完整版本: Python链表 - LeetCode 92.反转链表问题求助