题目描述
给定一个整数数组,判断是否存在重复元素。
如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。
示例 1:
输入: [1,2,3,1]
输出: true
示例 2:
输入: [1,2,3,4]
输出: false
示例 3:
输入: [1,1,1,3,3,4,3,2,4,2]
输出: true
关键点
- 存在重复元素, 返回
true, 不存在重复元素返回false - 利用
HashMap不存在重复key的原理, 以数据的元素为key存入HashMap中,查看最后HashMap的大小
图解
第一次循环
- 取出数据中的第一个元素
nums[0]作为key 将字符串1作为value - 将组装好的数据传入
map中

image
第二次循环
- 取出数据中的第一个元素
nums[1]作为key 将字符串1作为value -
存入map中image
依次进行第三次, 第四次循环之后, 现在HashMap 中存在的元素

image
进行第五次循环

image
在最后一次循环中, 存入
map的元素的key为3, 此时在map中已经存在key为3的元素了,所以本次存储不生效
最后对比数组和map的长度即可得出是否有重复元素
代码
public boolean containsDuplicate(int[] nums) {
Map<Object, Object> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
map.put(nums[i], "1");
}
return map.size() != nums.length;
}
