219. 存在重复元素 II(面试题也考过)

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;

    }
}

  

原文地址:https://www.cnblogs.com/lzh1043060917/p/12850758.html