数据结构与算法 LeetCode编程练习--Contains Duplicate II

来源:互联网 发布:windows错误报告 进程 编辑:程序博客网 时间:2024/06/07 00:22
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 difference between i and jis at most k.
思路:运用关联数组,键为数组中的值,值为数组中相应值得下标。
当我们发现这个键已经在map中存在了。就来判断当前的下标和map中的下标是否相差在k以内。
若是,返回true;
更新map中的键值对。(插入不会替换原来的键值对,只有通过下标才可以)


class Solution {
public:
bool containsNearbyDuplicate(vector<int>& nums, int k) {
if (nums.size() <= 1)
return false;
else
{
map<int, int> count;
for (int i = 0; i < nums.size();i++)
{
if (!(count.insert({nums[i],i})).second)
{
if ((i - count[nums[i]]) <= k)
{
return true;
}
}
count[nums[i]] = i;
}
return false;
}
}
};
(!(count.insert({nums[i],i})).second) insert(n) 若遇到已经存在的键值对,返回一个pair(元素,bool=false)。
0 0