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

 

相关文章:

  • 2021-07-25
  • 2021-08-20
  • 2021-07-22
  • 2022-03-01
猜你喜欢
  • 2021-07-09
  • 2021-09-04
  • 2021-06-16
  • 2022-01-24
  • 2021-06-16
  • 2021-06-12
相关资源
相似解决方案