题目描述:给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k。
题目链接:219. 存在重复元素 II
用map解决,tip[i]表示数i最后出现的位置。
class Solution {
public:
bool containsNearbyDuplicate(vector<int>& nums, int k) {
map<int,int> tip;
for (int i=0;i<nums.size();i++){
if (tip.count(nums[i])==0){
tip[nums[i]]=i;
}
else{
if (i-tip[nums[i]]<=k) return true;
tip[nums[i]]=i;
}
}
return false;
}
};