题目描述
给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的 绝对值 至多为 k。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/contains-duplicate-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
C++
class Solution {
public:
bool containsNearbyDuplicate(vector<int>& nums, int k) {
unordered_map<int,int> thismap;
for(int i=0;i<nums.size();i++){
if(thismap.find(nums[i])!=thismap.end())//通过给定主键查找元素,没找到:返回unordered_map::end
{
if(i-thismap[nums[i]]<=k){
return true;
}
thismap[nums[i]]=i; //距离超过K了,更新nums[i]的位置,用于下次比较
}
else{
thismap[nums[i]]=i;
}
}
return false;
}
};
第一次用C++的unordered_map,参考https://www.cnblogs.com/langyao/p/8823092.html