枚举法:
class Solution {
public boolean containsNearbyDuplicate(int[] nums, int k) {
for (int i = 0; i < nums.length; i++) {
for (int j = i+1; j <= Integer.min(nums.length - 1, i + k); j++) {
if(nums[i] == nums[j])return true;
}
}
return false;
}
}
class test{
public static void main(String[] args) {
int[] nums = {1,2,3,1,2,3};
System.out.println(new Solution().containsNearbyDuplicate(nums,2));
}
}
哈希表剔除法:
// 哈希表
class Solution {
public boolean containsNearbyDuplicate(int[] nums, int k) {
// for (int i = 0; i < nums.length; i++) {
// for (int j = i+1; j <= Integer.min(nums.length - 1, i + k); j++) {
// if(nums[i] == nums[j])return true;
// }
// }
// return false;
Set<Integer> set = new HashSet<>();
for (int i = 0; i < nums.length ; i++) {
if(!set.contains(nums[i])){
set.add(nums[i]);
}
else return true;
if(set.size() > k)set.remove(nums[i-k]);
}
return false;
}
}
class test{
public static void main(String[] args) {
int[] nums = {1,2,3,1};
System.out.println(new Solution().containsNearbyDuplicate(nums,3));
}
}