219. Contains Duplicate II

问题:

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 j is at most k.

答案:

前一题的升级版,多加了一个条件,即相同元素的下标值距离不超过k,这里用map来求解。最开始我写插入时直接用的insert,但因为insert只能插入map中不存在的元素,所以这里不能用insert。

 1 class Solution {
 2 public:
 3     bool containsNearbyDuplicate(vector<int>& nums, int k) {
 4         int n=nums.size();
 5         if(n<2){
 6            return false;
 7         }
 8         map<int,int>temp;
 9         for(int i=0;i<n;i++){
10             if(temp.find(nums[i])!=temp.end()&&i-temp[nums[i]]<=k){
11                 return true;
12             }
13         else{
14             temp[nums[i]]=i;
15         }
16     }
17         return false;
18     }
19 };

 

posted @ 2016-07-09 14:09  绵绵思远道  阅读(136)  评论(0编辑  收藏  举报