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

查找数组中次出现索引最小的重复元素及HashSet作用解析

关于重复元素问题的HashSet作用解析

咱们来一步步拆解这个问题和解决方案哈~

先说说你最初代码的问题

你原来的代码逻辑是把每个元素第一次出现的索引存入HashMap,然后找索引最小的元素——这和题目要求的「找到第二个出现位置索引最小的重复元素」完全不匹配,所以自然得不到正确结果。

可行方案里HashSet的核心作用

HashSet在这里的核心功能是快速追踪已经遍历过的元素,利用它「不允许重复元素」的特性,以及add()方法的返回值规则:

  • 当元素是第一次被遍历到,set.add(a[i])会把元素加入集合,返回true
  • 当元素已经在集合里(之前出现过),set.add(a[i])添加失败,返回false

这个返回值就成了我们判断「当前元素是否重复出现」的关键信号。

那个if条件是怎么生效的?

来看这个判断:

if(set.add(a[i])==false && !hm.containsKey(a[i]))

它的两个条件各司其职:

  • set.add(a[i])==false:确认当前元素是重复出现的(至少是第二次出现)
  • !hm.containsKey(a[i]):确保我们只记录这个元素第二次出现的索引。如果元素后续第三次、第四次出现,虽然set.add()还是返回false,但此时HashMap里已经存过它的第二次索引了,就不会再覆盖更新——这样HashMap里最终存储的就是每个重复元素的「第二次出现位置」。

之后遍历HashMap,找到值(第二次出现的索引)最小的那个键(元素),就是题目要求的答案啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:48:34