Related Topic: Hash Table,Array
思路:value存相同数的下标,对下标们排序,相邻下标相减看是否不超过k
class Solution {
public:bool containsNearbyDuplicate(vector<int>& nums, int k) {
unordered_map<int,vector<int>> hashmap;
for(int i=0;i<nums.size();i++){
int key=nums[i];
unordered_map<int,vector<int>>::iterator iter = hashmap.find(key);
if(iter == hashmap.end()){
vector<int> value;
value.push_back(i);
hashmap.insert(pair<int,vector<int>>(key,value));
}
else{
(iter->second).push_back(i);
}
}
for(unordered_map<int,vector<int>>::iterator iter = hashmap.begin();
iter!=hashmap.end();iter++){
sort((iter->second).begin(),(iter->second).end());
for(int i=0;i<(iter->second).size()-1;i++){
if(((iter->second)[i+1]-(iter->second)[i])<=k) return true;
}
}
return false;
}
};