Continuous Range K Duplicate

题目:
给一个array,然后给一个k,让check连续的k个integer是否含有duplicates。

解题思路:
用一个size大小为k的set就好。

代码:

public class ContinuousRangeKDuplicate {

    public boolean check(int[] nums, int k){
        if(nums == null || nums.length == 0){
            return false;
        }
        Set<Integer> set = new HashSet<>();
        Queue<Integer> queue = new LinkedList<>();
        for(int i = 0; i <= nums.length - 1; i++){
            System.out.println(set);
            if(set.size() == k){
                int temp = queue.poll();
                set.remove(temp);
            }
            if(set.size() != 0){
                if(set.contains(nums[i])){
                    return true;
                }
            }
            set.add(nums[i]);
            queue.offer(nums[i]);
        }
        return false;
    }

    public static void main(String[] args){
        ContinuousRangeKDuplicate continuousRangeKDuplicate = new ContinuousRangeKDuplicate();
        int[] input = new int[]{1, 2, 3, 4, 1};
        boolean rst = continuousRangeKDuplicate.check(input, 5);
        System.out.println(rst);
    }

}

Comments

Popular Posts