当前位置: 首页 > news >正文

LeetCode 217.存在重复元素

目录

题目:

题目描述:

题目链接:

思路:

思路一详解(排序):

思路二详解(Set):

思路三详解(Map):

代码:

Java思路一(排序)代码:

Java思路二(Set)代码:

Java思路三(Map)代码:


题目:

题目描述:

题目链接:

217. 存在重复元素 - 力扣(LeetCode)

思路:

思路一详解(排序):

先对整数数组进行排序,遍历排序后数组的每一位,再判断该位是否等于后一位。只要找到某一位等于后一位就说明任一值在数组至少出现两次,无需后续判断直接return true;即可。如果整个数组元素全部遍历完都不存在某一位等于后一位,返回false(索引结束条件为i<nums.length-1,防止数组越界)

思路二详解(Set):

遍历整个数组把每个数字放到Set中,Set具有去重的特性。每次放入数字时调用contains判断Set中是否存在该数字,如果已经存在就说明任一值在数组中出现至少两次,直接返回true。如果成功把数组的全部数组都放入Set中,就说明数组中不存在重复的元素,返回false

思路三详解(Map):

这题完全没必要用到Map,效率非常低,但是我还是提出这个思路也相当于是引入后续题目的思路,同时自己作为Java小白熟悉一下语法

Map里面存的是键值对,这题键存的是数组中的元素值,值存的是数组中这个元素出现的次数。遍历整个数组把每个数字存入键中,调用containsKey判断Map中的键是否存在这个数字,如果存在就调用get获取到这个键对应的值(即出现次数)+1再把调用put把键值对再存回Map中。如果不存在,就说明这个数字第一次出现,那么把键值对的值设为1再存回Map中。

最后利用键值对的方式遍历Map集合,用count记录每个键值对的值,判断count是否>=2,如果是则return true;如果不是则return false;

代码:

Java思路一(排序)代码:

class Solution {public boolean containsDuplicate(int[] nums) {Arrays.sort(nums);for(int i=0;i<nums.length-1;i++){if(nums[i]==nums[i+1]){return true;}}return false;}
}

Java思路二(Set)代码:

class Solution {public boolean containsDuplicate(int[] nums) {Set<Integer> set = new HashSet<>();for(int i=0;i<nums.length;i++){if(set.contains(nums[i])){return true;}set.add(nums[i]);}return false;}
}

Java思路三(Map)代码:

class Solution {public boolean containsDuplicate(int[] nums) {HashMap<Integer,Integer> hm = new HashMap<>();for(int i=0;i<nums.length;i++){if(hm.containsKey(nums[i])){int count=hm.get(nums[i]);count++;hm.put(nums[i],count);}else{hm.put(nums[i],1);}}Set<Map.Entry<Integer,Integer>> entries = hm.entrySet();for (Map.Entry<Integer, Integer> entry : entries) {int count = entry.getValue();if (count >= 2) {return true;}}return false;}
}

相关文章:

  • C++:因子问题
  • 【TTS回顾】Bert-VITS2深度解析:融合BERT的多语言语音合成模型
  • Python爬虫实战:获取国家统计网最新消费数据并分析,为从业者做参考
  • Spring Boot入门案例(Spring Initializr方式,IDEA版)
  • FANUC发那科焊接机器人智能气阀
  • Windows环境使用NVM高效管理多个Node.js版本
  • 可重入(Reentrant) vs 线程安全(Thread-Safe)
  • AI Agent开发第71课-一个完善的可落地企业AI Agent全架构
  • 视觉-语言导航:综述与类别
  • idea2024 不知道安装了什么插件,界面都是中文的了,不习惯,怎么修改各个选项改回英文
  • 网络安全-等级保护(等保) 2-7 GB/T 25058—2019 《信息安全技术 网络安全等级保护实施指南》-2019-08-30发布【现行】
  • upload-labs靶场通关详解:第11关
  • Java后端面试八股文大全(2025最新版)
  • 【八股战神篇】Java多线程高频面试题(JUC)
  • MongoDB及spring集成
  • SGLang和vllm比有什么优势?
  • 本案例介绍ABB电机保护单元如何走profibus总线通讯
  • stm32week16
  • MIME类型详解及应用案例
  • 【QT】一个界面中嵌入其它界面(二)
  • 欧洲观察室|欧盟对华战略或在中欧建交50年时“低开高走”
  • 中国证监会副主席李明:目前A股估值水平仍处于相对低位
  • 倒计时1天:走进“中国荔乡”茂名,探寻农交文旅商融合发展新模式
  • 人民日报大家谈:为基层减负,治在根子上减到点子上
  • 流失海外79年,两卷战国帛书回归祖国
  • “GoFun出行”订单时隔7年扣费后续:平台将退费,双方已和解