存在重复元素II
维护一个长度为k+1的集合作为窗口,判断是否出现重复,元素个数满了之后弹出k+1个前的数字。
class Solution:
def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool:
window = set()
for i, num in enumerate(nums):
if len(window) == k + 1:
window.remove(nums[i - 1 - k])
if num in window:
return True
window.add(num)
return False
class Solution {
public boolean containsNearbyDuplicate(int[] nums, int k) {
Set<Integer> set = new HashSet<>();
for (int i = 0; i < nums.length; ++i) {
if (set.size() == k + 1) {
set.remove(nums[i - k - 1]);
}
if (set.contains(nums[i])) {
return true;
}
set.add(nums[i]);
}
return false;
}
}