Contains Duplicate II

设置两个游标start和end,用于控制搜寻的段长,保持段长最长为k,之后在每个段内进行map匹配,看是否出现了重复元素

 1 class Solution {
 2 public:
 3     bool containsNearbyDuplicate(vector<int>& nums, int k) {
 4         int size=nums.size();
 5         map<int,int> mymap;
 6         int start=0;
 7         int end=0;
 8         if(k==0)
 9             return false;
10         for(int i=0;i<size;i++)
11         {
12             if(end-start>k)
13             {
14                 mymap.erase(nums[start]);
15                 start++;
16             }
17             if(mymap.find(nums[i])==mymap.end())
18             {
19                 mymap.insert(pair<int,int>(nums[i],1));
20                 end++;
21             }
22             else
23                 return true;
24         }
25         return false;
26     }
27 };