给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。
示例 1:
输入:nums = [1,2,3,1]
输出:true
示例 2:
输入:nums = [1,2,3,4]
输出:false
思路:
首先想到是排序,然后循环比较相邻两个数如果相邻两个数有相等得就返回true,如果整个循环下来没有相等得就返回false;
//此时没想到循环里拿相邻的数去比,只想到了设置外面一个值进行赋值比较=。=
public boolean containsDuplicate(int[] nums) {
Arrays.sort(nums);
Integer i = null;
for(int num : nums){
if(i == null){
i = num;
}else{
if(i == num){
return true;
}else{
i = num;
}
}
}
return false;
}
//通过获取数组长度,拿出相邻两数进行比较
public boolean containsDuplicate(int[] nums) {
Arrays.sort(nums);
int n = nums.length;
for (int i = 0; i < n - 1; i++) {
if (nums[i] == nums[i + 1]) {
return true;
}
}
return false;
}
方法2:
//通过Set
public boolean containsDuplicate(int[] nums) {
Set<Integer> set = new HashSet<Integer>();
for (int x : nums) {
if (!set.add(x)) {
return true;
}
}
return false;
}