思想:一个一个加入到set,如果正在加入的set中已经有了,就返回true。如果set的长度==k+1,就说明窗口要变小,就把set中nums[i-k]给删除,相当于把数组最前面的数给删除。
/**
* @param {number[]} nums
* @param {number} k
* @return {boolean}
*/
var containsNearbyDuplicate = function(nums, k) {
let set=new Set();
for(let i=0;i<nums.length;i++){
if(set.has(nums[i]))
return true;
set.add(nums[i]);
//当set的大小是k+1时,就把最前面的那个移除了
if(set.size==k+1)
set.delete(nums[i-k]);
}
return false;
};