classSolution { public: boolcontainsNearbyDuplicate(vector<int> &nums, int k){ unordered_set<int> s; int n = nums.size(); int cur = 0; for (int i = 0; i < n; ++i) { cur = nums[i]; if (s.find(cur) == s.end()) { s.insert(cur); if (s.size() > k) { //一旦超过k的长度就去掉前面k距离前的值 s.erase(nums[i - k]); } }else{//再次找到nums[i]说明小于距离k returntrue; } } returnfalse; } };
classSolution{ publicbooleancontainsNearbyDuplicate(int[] nums, int k){ Set<Integer> set = new HashSet<>(); for (int i = 0; i < nums.length; i++) { if (set.contains(nums[i])) { returntrue; } set.add(nums[i]); if (set.size() > k) { set.remove(nums[i - k]); } } returnfalse; } }