双循环会超时
bool containsNearbyDuplicate(vector<int>& nums, int k) {
for (int i = 0; i < nums.size() - 1; i++)
{
for (int j = i + 1; j < nums.size(); j++)
{
if (nums[i] == nums[j] && abs(i - j) <= k) return true;
}
}
return false;
}
使用map
bool containsNearbyDuplicate(vector<int>& nums, int k) {
unordered_map<int, int> mp;
unordered_map<int, int>::iterator itor;
for (int i = 0; i < nums.size(); i++) {
if (mp.find(nums[i]) != mp.end() && (i - mp.find(nums[i])->second) <= k){
return true;
}
else{
mp[nums[i]] = i;
//mp.insert(make_pair(nums[i], i));
//不能使用insert
}
}
return false;
}