You need to enable JavaScript to run this app. Python getIntersectionNode预期输出[5,4,8]实际返回空列表排查
优惠活动
大模型
产品
解决方案
定价
更多

Python getIntersectionNode预期输出[5,4,8]实际返回空列表排查

代码输出空列表的错误定位
  • 循环range参数逻辑错误(空返回的核心原因)
    Python的range(start, stop)默认以正1为步长生成整数序列。你写的两层循环的起始值都是-1,终止值都是-len(listB)(即比-1更小的负数),正步长下从起始值到终止值之间没有任何可迭代整数,因此两层循环的循环体完全不会执行,直接返回初始的空列表de。
  • 循环内部的下标引用逻辑完全混乱
    1. 内层循环定义了变量j,但判断逻辑全程没有使用j取值,反而重复用i同时索引两个列表的元素,就算循环能正常运行,也只是对比同一位置的元素,没有实现交叉匹配查找公共元素的逻辑。
    2. 即便判断到元素相等,追加逻辑写的是de.append(listA[-1]),即永远固定把listA的最后一个元素加入结果,不会收集当前匹配到的元素。
    3. 分支判断里的elif listA[-1] != listB[-1]逻辑完全冗余,两个列表的最后一个元素都是5,这个分支永远不会触发,还会在循环内无意义打印内容。
  • 类方法定义不符合常规编码规范
    按照Python的编码规范,类的实例方法第一个参数必须固定为self,用于绑定类实例的上下文。你当前定义的getIntersectionNode方法没有设置self参数,如果通过类名直接调用(也就是你当前的运行方式)虽然能传参运行,但不符合类方法的设计逻辑,后续如果要通过类实例调用该方法,会直接触发参数数量不匹配的报错。
  • 实现逻辑偏离目标需求
    你要找两个列表的交叉公共节点,核心逻辑是需要先把两个列表按尾部对齐,再从后往前匹配所有连续相同的公共后缀元素。当前代码没有做长度对齐、尾部匹配的相关处理,就算修正循环参数问题,也无法输出你预期的结果;同时从尾向前收集的结果顺序和你预期的[5,4,8]方向不一致,需要额外做反转操作才能匹配预期顺序。

参考修正代码:

listA = [4,1,8,4,5]
listB = [5,6,1,8,4,5]

class Solution(object):
    def getIntersectionNode(self, listA, listB):
        de = []
        # 从两个列表的末尾开始向前对齐遍历
        i, j = len(listA) - 1, len(listB) - 1
        while i >= 0 and j >= 0 and listA[i] == listB[j]:
            de.append(listA[i])
            i -= 1
            j -= 1
        # 反转结果匹配从后往前匹配得到的顺序
        de.reverse()
        return de

sol = Solution()
print(sol.getIntersectionNode(listA, listB))

内容的提问来源于stack exchange,提问作者M A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.01 04:45:06