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

LeetCode两数之和(Two Sum)算法无输出问题排查求助

Two Sum 代码无输出问题排查

问题根因

你的代码存在核心逻辑错误:存入字典的键不符合哈希表解法的设计要求。你当前存储的是当前元素的补数complement作为键,而正确逻辑应该存储**已经遍历过的元素值nums[i]**作为键,对应值为该元素的下标。
同时额外注意:不要用dict作为变量名,会覆盖Python内置的字典类关键字,可能引发未知异常。

错误复现(对应你给出的测试用例)

测试用例输入:nums = [3,2,4], target = 6
遍历执行过程如下:

  • 第1轮(i=0,nums[i]=3):计算补数为3,字典为空,将{3:0}存入字典
  • 第2轮(i=1,nums[i]=2):计算补数为4,字典中无4键,将{4:1}存入字典
  • 第3轮(i=2,nums[i]=4):计算补数为2,字典中现有键为3、4,无2键,将{2:2}存入字典
    遍历结束后无匹配结果,函数无返回值,因此输出空。

修复方案

将存入字典的键改为当前遍历的元素值nums[i]即可,修复后的代码如下:

def twoSum(self, nums: List[int], target: int) -> List[int]:
    num_dict = {}
    for i in range(len(nums)):
        complement = target - nums[i]
        if complement in num_dict:
            return [num_dict[complement], i]
        # 存储已遍历的元素值和对应下标
        num_dict[nums[i]] = i

修复后验证流程

  • 第1轮(i=0,nums[i]=3):补数为3,字典为空,将{3:0}存入字典
  • 第2轮(i=1,nums[i]=2):补数为4,字典中无4键,将{2:1}存入字典
  • 第3轮(i=2,nums[i]=4):补数为2,字典中存在键2,对应值为1,返回[1,2],符合正确输出要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:06:03