给你一个整数数组 nums
。如果任一值在数组中出现 至少两次 ,返回 true
;如果数组中每个元素互不相同,返回 false
。
实例1
输入:nums = [1,2,3,1] 输出:true
实例2
输入:nums = [1,2,3,4] 输出:false
class Solution {
public boolean containsDuplicate(int[] nums) {
int N = nums.length;
// 若数据小于等于一,则直接返回 false
if (N < 2) {
return false;
}
// 创建哈希表
int[] hash = new int[N];
int zero = 0;
for (int i = 0; i < N; i++) {
hash[i] = 0;
}
for (int i = 0; i < N; i++) {
if (nums[i] == 0) {
zero++;
if (zero > 1) {
return true;
}
continue;
}
int x= nums[i] % N;
if (x< 0) {
x+= N;
}
while (true) {
// 该位置没值,存入
if (hash[x] == 0) {
hash[x] = nums[i];
break;
} else if (hash[x] == nums[i]) {
return true;
} else {
x++;
if (x>= N) {
x-= N;
}
}
}
}
return false;
}
}