您的位置:首页 > 理论基础 > 数据结构算法

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

2015-12-22 23:57 387 查看
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)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: