1. 题目
给定一个整数数组,判断是否存在重复元素。
如果存在一值在数组中出现至少两次,函数返回 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
2. 思路
- 最简单的解法就是排序,查看相邻的两个元素值是否相同。
class Solution {
public boolean containsDuplicate(int[] nums) {
Arrays.sort(nums);
for(int i = 0;i < nums.length ;i++){//这里应该写nums.length - 1,做题时没有考虑到
if(nums[i] == nums[i + 1]){
return true;
}
}
return false;
}
}
-
看了官方解答,也可以使用Java哈希表的add方法的特性:
hashset.add(E e):返回boolean型,如果此 set 中尚未包含指定元素,则添加指定元素;如果此 set 已包含该元素,则该调用不更改 set 并返回 false。
class Solution {
public boolean containsDuplicate(int[] nums) {
Set<Integer> set = new HashSet<Integer>();
for(int i = 0; i < nums.length; i++){
if(set.add(nums[i]) == false){
return true;
}
}
return false;
}
}