哈希表-219.存在重复元素II-力扣(LeetCode)
一、题目解析
1、i!=j
2、nums[i] == nums[j]且abs(i-j)<=k
二、算法原理
解法:哈希表
与该题解法类似哈希表-1.两数之和-力扣(LeetCode)-CSDN博客,只不过多了一个下标差的判断。这里有一个小细节不容忽视,当哈希表中已存在查询元素时,在下标差比较后,不满足<=k,此时是否覆盖哈希表中的元素,更新下标呢?结果是肯定的,为了满足<=k的条件,肯定是越近的越好,所以离得远的可以直接覆盖
三、代码示例
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;}
};