题目:来源于力扣

分析:
用滑动窗口的思想,将遍历的区间限制在 i 到 i+k 之间。
需要用到set容器,将区间里的数插入到set中,如果该区间有重复的数,输出true。如果遍历的区间没有重复的数,那么在容器中删除该区间的第一个数,之后继续遍历下一个区间
上代码:
class Solution {
public:
bool containsNearbyDuplicate(vector<int>& nums, int k) {
set<int> s;
for(int i=0;i<nums.size();++i){
if(i>k){
s.erase(nums[i-k-1]);
}
if(s.count(nums[i])){
return true;
}
s.insert(nums[i]);
}
return false;
}
};
又是刷题的一天!!!
( ఠൠఠ )ノ
博客讲述了使用滑动窗口和集合(set)数据结构解决LeetCode中查找数组内指定距离内重复元素的问题。通过遍历数组并维护一个大小为k的窗口,利用集合的唯一性来判断是否存在重复项,一旦发现重复立即返回true。若遍历完所有窗口仍没找到重复,返回false。这是对滑动窗口算法的一个典型应用。
359

被折叠的 条评论
为什么被折叠?



