[](219. 存在重复元素 II - 力扣(LeetCode))
标签:滑动窗口+unordered_set(无序、去重)
代码
(初始版):
bool containsNearbyDuplicate(vector<int>& nums, int k) {
unordered_set<int>s;
int t=nums.size();
if(t==1){return false;}
for(int i=0; i<=min(k,t-1); i++){
if(s.find(nums[i])==s.end()){
s.insert(nums[i]);
}
else{
return true;
}
}
for(int i=0,j=k+1;j<t;j++){
s.erase(nums[i++]);
if(s.find(nums[j])==s.end()){
s.insert(nums[j]);
}
else{
return true;
}
}
return false;
}
(简洁版):
bool containsNearbyDuplicate(vector<int>& nums, int k) {
int t=nums.size();
unordered_set<int>s;
for(int i=0; i<t; i++){
if(s.count(nums[i])&&s.size()<=k){return true;}
if(s.size()==k+1){
s.erase(nums[i-k-1]);
}
if(s.count(nums[i])){return true;}
s.insert(nums[i]);
}
return false;
}
复杂度: O(n)