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 absolute difference between i and j is at most k.
在数组中找两个相等的数,如果他们索引之差的绝对值 <= k 则返回true
C++(26ms):
1 class Solution { 2 public: 3 bool containsNearbyDuplicate(vector & nums, int k) { 4 unordered_set s ; 5 int len = nums.size() ; 6 for (int i = 0 ; i < len ; i++){ 7 if (i > k) 8 s.erase(nums[i-k-1]) ; 9 if (!s.insert(nums[i]).second)10 return true ;11 }12 return false ;13 }14 };
C++(155ms):
1 class Solution { 2 public: 3 bool containsNearbyDuplicate(vector & nums, int k) { 4 unordered_mapMap ; 5 int len = nums.size() ; 6 bool flag = false ; 7 for (int i = 0; i < len;i++ ){ 8 if (Map[nums[i]]){ 9 int t = abs(i+1 - Map[nums[i]]) ; 10 Map[nums[i]] = i+1 ;11 if (t <= k){12 flag = true ;13 break ;14 } 15 }else{16 Map[nums[i]] = i+1 ;17 cout<