鱼C论坛

 找回密码
 立即注册
查看: 3104|回复: 2

[已解决]Python链表 - LeetCode 92.反转链表问题求助

[复制链接]
发表于 2021-8-24 15:39:19 | 显示全部楼层 |阅读模式
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),就出现了图中显示的错误返回,请问为什么会出现这样的错误?求大神指点!
最佳答案
2021-8-24 15:39:20
你改成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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-24 15:39:20 | 显示全部楼层    本楼为最佳答案   
你改成next.next = cur  是只符合第一次翻转时的情况 如例子中的2,3翻转时的情况3->2->4  你在往下考虑一次翻转情况会发现
后面要4->3而不是next.next = cur这样会使得4->2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-8-25 09:39:04 | 显示全部楼层
lei1996 发表于 2021-8-24 22:02
你改成next.next = cur  是只符合第一次翻转时的情况 如例子中的2,3翻转时的情况3->2->4  你在往下考虑一次 ...

谢谢大佬,大佬牛逼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-7-4 23:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表