Given an array of integers and an integer k, find out whether there are two distinct indices i and j in the array such that nums[i] = nums[j] and the absolute difference between i and j is at most k.
Example 1:
Input: [1,2,3,1], k = 3 Output: true
Example 2:
Input: [1,0,1,1], k = 1 Output: true
Example 3:
Input: [1,2,1], k = 0 Output: false
思路:
1.使用unodered_map标记出现过的元素,如果之前出现过并且距离在k以内,返回true,否则返回false。
参考代码:
class Solution {
public:
bool containsNearbyDuplicate(vector<int>& nums, int k) {
unordered_map<int,int> mp;
for(int i=0;i<nums.size();i++){
auto it=mp.find(nums[i]);
if(it!=mp.end()){
if(i-it->second<=k)
return true;
}
mp[nums[i]]=i;
}
return false;
}
};