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

如何判断列表中是否存在重复整数?代码实现遇阻求解答

问题分析与解决

你的代码问题

你的代码逻辑完全偏离需求:

  • 循环里每次取列表的一个元素x,判断x == x——这对任何整数来说都是恒成立的,所以不管列表有没有重复,函数都会在遍历第一个元素时直接返回True,根本没检查不同元素之间是否重复。
  • 后面的elif x != x分支永远不会触发,整数不存在自身不等于自身的情况。

正确实现方式

方法1:利用集合去重(最简洁)

def has_duplicate(n):
    return len(n) != len(set(n))

原理:集合会自动剔除重复元素,如果原列表长度和集合长度不一致,说明存在重复整数。

方法2:遍历检查后续元素

def has_duplicate(n):
    for i in range(len(n)):
        # 检查当前元素在后面的子列表中是否存在
        if n[i] in n[i+1:]:
            return True
    return False

原理:逐个遍历元素,检查它之后的元素里有没有重复项,找到就立即返回True,遍历完无重复则返回False。

方法3:用字典记录已出现元素(效率更高)

def has_duplicate(n):
    seen = {}
    for num in n:
        if num in seen:
            return True
        # 记录已见过的元素
        seen[num] = True
    return False

原理:遍历过程中用字典存已经遇到的元素,遇到重复元素直接返回True,时间复杂度为O(n),适合处理长列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 07:55:22