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

Python如何返回多个值?两数之和问题优化求解

两数之和:返回所有符合条件的数对

你这段代码的问题很明显——找到第一组合条件的数对就直接return退出函数了,所以只能拿到第一组结果。要返回所有符合要求的数对,只需要把找到的数对都收集起来,等循环跑完再一起返回就行。

修改后的代码

def twoSum(arr, A):
    result = []  # 用空列表存所有符合条件的数对
    for i in range(len(arr)):
        for j in range(i+1, len(arr)):
            if arr[i] + arr[j] == A:
                result.append((arr[i], arr[j]))  # 找到一组就加进列表
    return result  # 循环结束后返回全部结果
                
print(twoSum([1,2,3,4],5))  # 输出:[(1, 4), (2, 3)]

核心修改点

  • 新增result = []来存储所有匹配的数对,替代原代码中找到一个就返回的逻辑
  • 把原代码里的return(arr[i], arr[j])换成result.append((arr[i], arr[j])),将每一组符合条件的数对添加到列表中
  • 等所有循环都执行完,再通过return result返回收集到的所有数对

额外补充:处理重复元素的情况

如果你的数组里有重复元素(比如[1,1,2,3],目标数为4),上面的代码会返回[(1,3),(1,3)]这种重复的数对。如果需要去重,可以先对数组做去重处理:

def twoSum(arr, A):
    result = []
    unique_arr = list(set(arr))  # 去重后的数组
    for i in range(len(unique_arr)):
        for j in range(i+1, len(unique_arr)):
            if unique_arr[i] + unique_arr[j] == A:
                result.append((unique_arr[i], unique_arr[j]))
    return result
                
print(twoSum([1,1,2,3],4))  # 输出:[(1, 3)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 16:31:05