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

使用itertools.combinations求解两数之和时如何获取元素对应下标

两数之和问题修正方案

原代码核心问题

  • 你调用combinations(a,2)生成的是列表值的二元组合,而非下标的组合,所以拿到的tuple是两个数值,无法直接作为列表索引使用
  • 条件判断中的sum(i) in a属于无效逻辑:你仅需要校验两数之和等于target,不需要验证和是否存在于原列表中
  • 不需要额外判断组合内的元素是否属于原列表:combinations是直接从传入的列表中提取元素生成的组合,天然满足元素归属条件
  • enumerate(a[i])写法完全错误,且你没有存储、返回找到的下标结果,函数无输出

修正后代码

直接生成下标的二元组合进行校验,符合条件直接返回即可:

from itertools import combinations
def twoSum(nums, target):
    # 遍历所有不重复的下标二元组合
    for idx1, idx2 in combinations(range(len(nums)), 2):
        if nums[idx1] + nums[idx2] == target:
            return [idx1, idx2]

测试验证

输入测试用例nums = [1,2,3,5,6]、target=5时,函数返回[1,2],与预期输出一致。

补充说明:如果坚持用值组合的方案查找下标,遇到列表存在重复值时会出现下标匹配错误(例如nums=[2,2]、target=4的场景,用list.index()方法会两次返回第一个2的下标),因此直接遍历下标组合的方案兼容性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:45:04