You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python运行代码列表重复打印两次的问题排查

两数之和代码输出异常排查

你贴出的代码片段本身仅包含1次print(Output)语句,正常单次执行只会输出一次结果。如果出现两次打印,优先排查三类环境问题:

  • 运行环境开启了自动重载,代码被触发执行了两次
  • 你贴出的片段之外,代码文件其他位置残留了额外的print语句
  • 交互式运行环境(如Jupyter、Python命令行)保留了历史运行结果,第一次输出是旧版本代码的运行结果,第二次才是当前代码的输出

代码本身的逻辑缺陷

即便解决重复打印问题,当前代码逻辑在部分场景下会输出错误结果,核心问题有两个:

  1. 未排除自身匹配的情况:当遍历到的元素值恰好等于target - nums[i](即元素值*2=target)时,代码会将当前元素自身的索引加入结果,导致同一个索引被重复计算。例如nums=[3,4]、target=6时,遍历到索引0的3时,计算得到补数为3,会直接把索引0加入结果,最终输出错误值。
  2. 重复元素场景下索引取值错误:list.index()方法只会返回匹配值第一次出现的索引,当列表存在重复值时会取错位置。例如nums=[3,3]、target=6时,遍历到索引1的3时,nums.index(3)永远返回0,最终输出错误的[0,0]而非正确的[0,1]。

修正后代码

用哈希表存储已经遍历过的元素和对应索引,从根源避免上述两个问题,时间复杂度也从O(n²)优化到O(n):

nums = [2,7,15,11]
target = 18
result = []
num_index_map = {}
for idx, num in enumerate(nums):
    complement = target - num
    if complement in num_index_map:
        result = [num_index_map[complement], idx]
        break
    num_index_map[num] = idx
print(result)

运行后将稳定输出正确结果[1, 3],不会出现重复打印、结果错误的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 20:12:16