219. Contains Duplicate II

Given an array of integers and an integerk, find out whether there are two distinct indicesiandjin the array such thatnums[i] = nums[j]and the difference betweeniandjis at mostk.


题目大意:

找到数组中两个相同元素,如果这两个元素的距离小于等于k,则返回true。如果任意两个相同元素的距离都大于k,或者没有两个元素是相同的,那么返回false。

代码如下:

classSolution{public:boolcontainsNearbyDuplicate(vector<int>&nums,intk){unordered_map<int,int>myMap;for(inti=0;i<nums.size();i++){if(myMap.find(nums[i])==myMap.end()){myMap.insert(pair<int,int>(nums[i],i));}else{if(i-myMap[nums[i]]<=k){returntrue;}elsemyMap[nums[i]]=i;}}returnfalse;}};

2016-08-12 01:54:29