当前位置: 首页 > 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;}
}

http://www.xdnf.cn/news/522019.html

相关文章:

  • 大语言模型训练数据格式:Alpaca 和 ShareGPT
  • 将视频中的音乐传到qq音乐上听
  • DS新论文解读(2)
  • HashMap的扩容机制
  • Vue环境下数据导出Excel的全面指南
  • 一:操作系统之系统调用
  • 【应用开发十】pwm
  • numpy数组的拆分和组合
  • 【Linux服务器】-虚拟机安装(CentOS7.9)
  • 我的世界模组开发——方块(2)
  • 图像定制大一统?字节提出DreamO,支持人物生成、 ID保持、虚拟试穿、风格迁移等多项任务,有效解决多泛化性冲突。
  • 串口通讯协议学习
  • BiRefNet V3版 - 一个高精度的高分辨率图像抠图模型,AI“抠图之王” 支持50系显卡 本地一键整合包下载
  • 【言语理解】逻辑填空之逻辑对应11
  • 【MySQL】存储过程,存储函数,触发器
  • fcQCA模糊集定性比较分析法-学习笔记
  • OpenHarmony 5.0状态栏息屏状态下充电然后亮屏会出现电量跳变情况
  • 19-I2C库函数
  • ProfibusDP转ModbusRTU的实用攻略
  • WindowsPE文件格式入门11.资源表
  • 算法-js-柱状图中最大的矩形
  • 计算机系统的层次结构
  • 采摘桑葚
  • 中级网络工程师知识点6
  • 掌握生成式 AI 的未来:Google Cloud 全新认证
  • Office 中 VBE 的共同特点与区别
  • 【typenum】 12 类型级数组(array.rs)
  • Node.js 框架
  • 20-HAL库
  • 进程控制总结