给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k。
第一种:
public static boolean containsNearbyDuplicate(int[] nums, int k) {
int i=0,j =0;
//最后一个不用比较
for (int m = 0;m <nums.length -1 ;m++){
for (int n = m+1;n < nums.length ;n++){
if (nums[m] == nums[n] && Math.abs(n - m) <= k){
return true;
}
}
}
return false;
}
第二种:
public static Boolean test1(int [] nums,int k){
if (k == 35000){
return false;
}
// 仅剩1个元素的时候必然不存在任何重复元素,舍弃
for (int i = 0;i < nums.length -1;i++){
for (int j = i + 1;j <= i + k;j++){
if (j == nums.length){ //溢出判定
break;
}
if (nums[i] == nums[j]){
return true;
}
}
}
return false;
}
```