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 jis at most k.
思路:用set记录每个数字,对于距离超过k的从set中擦出。
1 class Solution { 2 public: 3 bool containsNearbyDuplicate(vector<int>& nums, int k) { 4 int n = nums.size(); 5 set<int> check; 6 for (int i = 0; i < n; i++) 7 { 8 if (i > k) check.erase(nums[i - k - 1]); 9 if (check.count(nums[i])) return true; 10 check.insert(nums[i]); 11 } 12 return false; 13 } 14 };