1、题目描述
2、题目分析
使用哈希表 和分情况讨论的方法
3、代码
bool containsNearbyDuplicate(vector<int>& nums, int k) { if( nums.size() == 0 ){ return false; } if( k >= nums.size() ){ map<int,int> m; for( auto n: nums){ m[n]++; if(m[n] > 1){ return true; } } return false; } map<int,int>m; for( int i = 0; i < nums.size() - k +1; i++){ if( i == 0){ for(int j = i; j <= k; j++){ m[nums[j]]++; if(m[nums[i+k]] > 1) return true; } }else{ if( m[nums[i-1]] <= 1){ m.erase(nums[i-1]); }else { m[nums[i-1]]--; } if( i+k < nums.size() ){ m[nums[i+k]]++; if(m[nums[i+k]] > 1) return true; } } } return false; }