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

Python含'in'条件的if语句处理[3,3]数组时失效问题排查

LeetCode「检查重复项」代码错误原因解析

我正在做LeetCode的「检查重复项」题目,当函数接收数组[3,3]时,编写的代码中本应返回True的if语句未生效。以下是我的代码:

def containsDuplicate(nums) -> bool:
    list = {}
    for i in range (len(nums)):
        if 3 in list:
            return True
        else:
            list[i] = nums[i]
            print(list[i])
  
    return False

print(containsDuplicate([3, 3]))

请问有人知道该if语句未按预期工作的原因吗?我知道可以用set或哈希表实现,但想搞懂当前代码的错误所在。

核心错误点

  • 字典键值存储逻辑完全颠倒:你把数组的索引i作为字典的键,数组元素nums[i]作为值,但if 3 in list是在检查字典的键中是否存在3——而你的字典键永远是0、1这类索引数字,不可能出现3,所以这个判断永远不会触发返回True。
  • 硬编码判断值3:就算存储逻辑正确,直接判断3 in list也只对包含3的重复项生效,换个测试用例比如[2,2]照样失效,正确的做法应该判断当前遍历的元素是否已存在于字典中。

修正后的哈希表实现代码

def containsDuplicate(nums) -> bool:
    num_dict = {}  # 避免用list作为变量名,会覆盖Python内置的list类型
    for num in nums:  # 直接遍历数组元素,无需索引更简洁
        if num in num_dict:
            return True
        num_dict[num] = True  # 值可以是任意内容,只要键是数组元素即可
    return False

print(containsDuplicate([3, 3]))  # 此时会正确返回True

内容的提问来源于stack exchange,提问作者Sebastian Presno Alvarado

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 05:07:07