题意:给一个数组,找出是否有两个相同的元素,且其位置差值最多为k
solution:hash key为元素值,value要保存的不仅仅是是否出现过,还要保存位置信息,因此是unordered_map<int, vector<int>> hash。
class Solution {
public:
bool containsNearbyDuplicate(vector<int>& nums, int k) {
unordered_map<int, vector<int>> hash;
int len = nums.size();
for ( int i = 0; i < len; i++ ) {
if ( hash.find(nums[i]) != hash.end() && i-hash[nums[i]].back() <= k ) {
return true;
}
hash[nums[i]].push_back(i);
}
return false;
}
};
submission: