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

CodeSignal firstDuplicate(a)算法题:查找首个最小索引重复数

代码问题分析与修复方案

你的代码存在两处核心逻辑错误:

  • 条件分支逻辑完全颠倒:当前你写的是「如果元素已经在seen集合中(即已经出现过一次),才执行添加操作」,完全不符合需求逻辑
  • 没有命中结果时的提前返回逻辑:哪怕检测到重复元素,你的代码也不会返回该元素,而是继续遍历,最终永远返回-1

正确的实现逻辑如下:
遍历数组时,先判断当前元素是否已经被记录过:

  1. 如果已经存在于已访问集合,说明这是该元素第二次出现,因为我们是按顺序遍历的,所以第一个命中该条件的元素就是符合要求的答案,直接返回即可
  2. 如果不存在于已访问集合,就把该元素加入集合,继续遍历
  3. 遍历完成都没有命中重复,返回-1

修复后的代码:

def firstDuplicate(a):
    seen = set()
    for num in a:
        if num in seen:
            return num
        seen.add(num)
    return -1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:45:03