239.滑动窗口最大值

class Solution {
       public int[] maxSlidingWindow(int[] nums, int k) {
        int n = nums.length;
        int index = 0;
        int[] res = new int[n - k + 1];
        Deque<Integer> dq =new ArrayDeque<>();
        for (int i = 0; i < nums.length; i++) {
            if (!dq.isEmpty() && dq.getFirst() == i - k){
                dq.removeFirst();
            }
            while (!dq.isEmpty() && nums[dq.getLast()] < nums[i]){
                dq.removeLast();
            }
            dq.add(i);
            if (i - k >= -1){
                res[index++] = nums[dq.getFirst()];
            }
        }
        return res;

    }
}
posted @ 2021-01-02 18:00  backTraced  阅读(46)  评论(0)    收藏  举报