- 题目描述:
- 给你一个整数数组nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。
- 示例:
- 解题思路:
- 1.HashMap
- 2.排序
- 3.HashSet
- 解(1):
- public boolean containsDuplicate(int[] nums) {
- HashMap
hm= new HashMap<>();//创建哈希表 - boolean flag=false;//默认数组中每个元素互不相同
- for(int i=0;i<nums.length;++i){//遍历数组,得到数组中的每一个值
- int key=nums[i]; //将拿得到的每一个值作为键
- Integer values=hm.get(key);//拿得到的每一个值作为键到HashMap集合中去找对应的值,看其返回值(注意:values的类型一定要是Integer,不能是int,否则会报int类型不能为null的错误)
- //如果返回值是null:说明该字符在HashMap集合中不存在,就把该字符作为键,1作为存储值
- if(values==null){
- hm.put(key,1);
- //如果返回值不是null:说明该字符在HashMap集合中存在,返回true
- }else{
- flag=true;
- }
- }
- return flag;
- }
- 解(3):
- public boolean containsDuplicate(int[] nums) {
- HashSet
set = new HashSet<>();//创建HashSet - for(int num:nums){//增强for循环
- set.add(num);//将数组元素依次添加到集合中
- }
- //因为set集合是不允许重复的,所以两者长度相等,则说明无重复元素,反之,有重复元素
- return set.size()==nums.length?false:true;
- }
题目描述:
给你一个整数数组nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。
示例:

