一、题目解析

1、i!=j
2、nums[i] == nums[j]且abs(i-j)<=k
二、算法原理
解法:哈希表
与该题解法类似哈希表-1.两数之和-力扣(LeetCode)-CSDN博客,只不过多了一个下标差的判断。这里有一个小细节不容忽视,当哈希表中已存在查询元素时,在下标差比较后,不满足<=k,此时是否覆盖哈希表中的元素,更新下标呢?结果是肯定的,为了满足<=k的条件,肯定是越近的越好,所以离得远的可以直接覆盖
三、代码示例
cpp
class Solution {
public:
bool containsNearbyDuplicate(vector<int>& nums, int k)
{
unordered_map<int,int> hash;
for(int i = 0;i<nums.size();i++)
{
if(hash.count(nums[i]))
{
if(abs(hash[nums[i]]-i)<=k)
return true;
}
hash[nums[i]] = i;
}
return false;
}
};
