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

Sum of Pairs问题排查:输入[20,-13,40]求和-7返回异常

问题分析与修复

核心问题

你的代码存在两个关键问题:

  1. 无匹配时返回值错误:当没有找到符合条件的数对时,你返回了空列表lst,但题目要求返回None。你提到返回了[20, -13, 40]应该是测试时的误会——实际运行这段代码,输入[20, -13, 40]和目标和-7时,lst是空的,代码会返回[]而非原列表。
  2. 双重循环效率低下且产生重复项:双层循环会遍历所有i和j的组合,包括i>j的情况,这会生成重复的数对(比如(20,-13)和(-13,20)都会被加入列表),既浪费性能,也完全没必要。

另外,虽然你通过max(i,j)排序能得到符合要求的结果,但双重循环的方式远不如单次遍历高效。

修复后的代码

用哈希表(字典)优化,只需一次遍历就能找到符合要求的数对,同时保证第二个元素的索引最小:

def sum_pairs(ints, s):
    seen = {}
    for idx, num in enumerate(ints):
        complement = s - num
        if complement in seen:
            return [complement, num]
        seen[num] = idx
    return None

逻辑说明

  • 遍历列表时,用字典seen记录已经遍历过的数字及其索引
  • 对当前数字num,计算需要的补数complement = s - num
  • 如果补数已在seen中,说明之前出现过该数,此时返回[complement, num]——补数的索引更小,这是第一个找到的、第二个元素索引最小的数对
  • 遍历结束无匹配时,返回None

测试验证

输入[20, -13, 40]、目标和-7时:

  • 20的补数是-27,不在seen中,存入20和索引0
  • -13的补数是6,不在seen中,存入-13和索引1
  • 40的补数是-47,不在seen中,存入40和索引2
  • 遍历结束,返回None,完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 08:05:24