给你一个整数数组 nums
。如果任一值在数组中出现 至少两次 ,返回 true
;如果数组中每个元素互不相同,返回 false
。
方法1
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;
}
}
思路:
对数组从小到大排序,数组的重复元素一定出现在相邻位置中。因此,我们可以扫描已排序的数组,每次判断相邻的两个元素是否相等,如果相等则说明存在重复的元素。
方法2
class Solution {
public boolean containsDuplicate(int[] nums) {
Set<Integer> set=new HashSet<>();
for(int i=0;i<nums.length;i++){
if(!set.add(nums[i])){
return true;
}
}
return false;
}
}
运行结果:
思路:
对于数组中每个元素,将它插入到哈希表中。如果插入一个元素时发现该元素已经存在于哈希表中,则说明存在重复的元素。
HashSet<Integer> set = new HashSet<>();
System.out.println("1:"+set.add(1));
System.out.println("2:"+set.add(1));
运行结果:
set.add()插入失败返回false,插入成功返回true。