您的位置:首页 > 大数据 > 人工智能

LeetCode-Contains Duplicate II

2015-10-10 19:09 405 查看
Given an array of integers and an integer k, find out whether there there are two distinct indices i and j in the array such that nums[i] = nums[j] and
the difference between i and j is at most k.

这道题牵涉到map容器的使用。主要的思想是,用map的查找优势,避免二重循环,即降低运算复杂度。

本题的答案来自“阳光的味道-辉”博主,链接:http://blog.csdn.net/sxhlovehmm/article/details/46552995

class Solution {
public:
bool containsNearbyDuplicate(vector<int>& nums, int k) {
map<int,vector<int> > arrayMap;
for(int i=0;i<nums.size();i++){
if(arrayMap.count(nums[i])==0){
vector<int> arrvec;
arrvec.push_back(i);
arrayMap.insert(pair<int,vector<int> >(nums[i],arrvec));
}
else{
int length=arrayMap[nums[i]].size();
if(i-arrayMap[nums[i]][length-1]<=k)//符合条件则返回
return true;
else
arrayMap[nums[i]].push_back(i);
}
}
return false;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: