class Solution {
public:
bool containsNearbyDuplicate(vector<int>& nums, int k) {
if(nums.size()<2) return false;
int size = nums.size();
int left = 0, right = 0;
/// 创建一个窗口
unordered_map<int,int> window;
/// 如果没遍历完 一直遍历
while(right<size){
/// 放进窗口数据
int num = nums[right];
right ++;
window[num]++;
/// 窗口的大小和k比较,如果比k大 left收缩
while(right - left > k){
int d = nums[left];
left++;
/// 如果收缩一步之后和k相等并且窗口里某个值的个数大于1返回true
if(right-left == k){
if(window[num] > 1){
return true;
}
}
window[d]--;
}
/// 达不到k的时候个数大于1返回true
if(window[num] > 1){
return true;
}
}
return false;
}
};
Leetcode 219. 存在重复元素 II
最新推荐文章于 2024-07-21 15:36:00 发布