https://leetcode.cn/problems/contains-duplicate-ii/
标签:滑动窗口+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)