设置两个游标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 };