219.存在重复元素II
-
链接
leetcode
-
solution:
用unordered_map,其中key值为nums[i],value值为下标,如果map中还没有该元素,则增加,否则比较找的元素下标与当前下标的差绝对值是否大于k
-
code
class Solution {
public:
bool containsNearbyDuplicate(vector<int>& nums, int k) {
int n = nums.size(), idx = 0;
unordered_map<int, int> nmap; // key:nums[i], value:index c++中用这个
for (int i = 0; i < n; ++i) {
auto iter = nmap.find(nums[i]);
if (iter != nmap.end()) {
if (i - iter->second <= k) return true;
else iter->second = i;
}
else nmap[nums[i]] = i;
}
return false;
}
};//思路很棒!!