判断给定数组中是否存在i和j,使得nums[i] == nums[j]并且j - i <= 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]) && i - hash[nums[i]] <= k) {
return true;
}
hash[nums[i]] = i;
}
return false;
}
};