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

Python统计列表A中和为12的非重复数对及代码问题排查

两数之和配对代码排查与修正

原代码核心问题

  • 语法错误:print()函数返回值为None,原代码在print语句末尾用+连接s.add(arr[i])操作,会直接触发TypeError,代码完全无法运行。
  • 逻辑错位:原代码将集合添加元素的操作与print语句绑定,没有实现“每遍历一个元素就将其加入待匹配集合”的核心逻辑,导致集合始终为空,哪怕修正语法错误也无法触发配对判断。
  • 重复冗余:未对已参与配对的元素做标记,会导致同一元素被反复匹配,生成大量无意义的重复数对。

修正后的实现方案

采用下标标记法,保留原数组元素的出现顺序,保证每个元素最多参与一次配对,从根源上避免重复输出:

def get_pairs(arr, target_sum):
    # 标记数组内每个位置的元素是否已参与配对
    used = [False] * len(arr)
    pairs = []
    for i in range(len(arr)):
        # 已配对的元素直接跳过
        if used[i]:
            continue
        needed_val = target_sum - arr[i]
        # 查找i位置之后,第一个未被使用、值符合要求的元素
        for j in range(i + 1, len(arr)):
            if not used[j] and arr[j] == needed_val:
                pairs.append([arr[i], arr[j]])
                used[i] = True
                used[j] = True
                break
    return pairs

A = [4, 8, 9, 0, 12, 1, 4, 2, 12, 12, 4, 4, 8, 11, 12, 0]
target = 12
result = get_pairs(A, target)
print(result)

运行结果

上述代码的输出为:
[[4, 8], [0, 12], [1, 11], [4, 8], [12, 0]]
共5个数对,与期望的数对集合完全匹配,仅存在元素排列顺序的微小差异,可根据需要调整数对内的元素顺序适配自定义输出要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 11:15:04