维护一个hash表,key为数组的值,value为下标
将数组中的元素不断添加进这个HashMap, 碰到重复时,计算二者的下标距离,如果距离小于或等于k,则返回true, 如果直到数组扫描完,距离都大于k,则返回false
class Solution
{
public:
bool containsNearbyDuplicate(vector<int> &nums, int k)
{
unordered_map<int, int> mapping;
for (int i = 0; i < nums.size(); i++)
{
if (mapping.find(nums[i]) != mapping.end() && (i - mapping[nums[i]]) <= k)
return true;
mapping[nums[i]] = i;
}
return false;
}
};