思路:用数据结构维护一个长度为k的集合,不断往集合里面填数,判断该数是否存在在集合中,当size大于k时抹掉最前端的元素从而维护长度小于等于k的集合。
class Solution {
public:
unordered_set<int>set;
bool containsNearbyDuplicate(vector<int>& nums, int k) {
int n =nums.size();
for(int i=0;i<n;i++){
if(set.count(nums[i]))return true;
set.insert(nums[i]);
//维护集合元素在k个及k个以下
if(set.size()>k){
set.erase(nums[i-k]);
}
}
return false;
}
};