Sliding Window Maximum

来源:互联网 发布:网络上的高邮人啥意思 编辑:程序博客网 时间:2024/06/06 02:10
    public int[] maxSlidingWindow(int[] nums, int k) {        int n = nums.length;        if (n == 0) {            return nums;        }        int[] result = new int[n - k + 1];        int idx = 0;        ArrayDeque<Integer> arrayDeque = new ArrayDeque<>();        for (int i = 0; i < n; i++) {            while (!arrayDeque.isEmpty() && arrayDeque.peekFirst() < i - k + 1) {                arrayDeque.pollFirst();            }            /*            单调递减序列             */            while (!arrayDeque.isEmpty() && nums[arrayDeque.peekLast()] <= nums[i]) {                arrayDeque.pollLast();            }            arrayDeque.offerLast(i);            if (i >= k - 1) {                result[idx++] = nums[arrayDeque.peekFirst()];            }        }        return result;    }

0 0
原创粉丝点击