题目:
代码(首刷自解 2024年4月5日):
class Solution {
public:
bool containsNearbyDuplicate(vector<int>& nums, int k) {
// k 个数存队列,建立哈希索引
queue<int> q;
unordered_set<int> us;
// 存入初始队列
for (int i = 0; i <= k && i < nums.size(); ++i) {
if (us.find(nums[i]) != us.end()) {
return true;
}
us.insert(nums[i]);
q.push(nums[i]);
}
// 队列移动,哈希变化并检查
for (int i = k + 1; i < nums.size(); ++i) {
us.erase(q.front());
q.pop();
if (us.find(nums[i]) != us.end()) return true;
us.insert(nums[i]);
q.push(nums[i]);
}
return false;
}
};