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 };