class Solution {//看笔记,散列表 public boolean containsNearbyDuplicate(int[] nums, int k) { Set<Integer> set=new HashSet<Integer>();//散列表,不能存储相同元素,而且存储元素顺序不是按照存入时的顺序。 for(int i=0;i<nums.length;i++)//题意是,j与i差值k以内的时候,俩数相等,就算true。所以,让HashSet里面元素小于等于k个,一旦当前元素在set里面存在,就说明k个下标以内,有相同的数出现了,则符合返回true的要求。如果当前set里面元素总数大于k,就退出最旧的元素,保证不超过k个 { if(set.contains(nums[i])) return true; set.add(nums[i]); if(set.size()>k)set.remove(nums[i-k]); } return false; } }