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 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 };
原文地址:https://www.cnblogs.com/fenshen371/p/4906716.html