第12天--算法(滑动窗口最大值)

滑动窗口最大值

public int[] maxSlidingWindow(int[] nums, int k) {

        if(nums == null || k < 1 || nums.length < k) {

            return new int[0];

        }

        LinkedList<Integer> list = new LinkedList<>();

        int res[] = new int[nums.length - k + 1];

        int index = 0;

        for(int i = 0;i < nums.length;i ++) {

            while(!list.isEmpty() && nums[i] >= nums[list.peekLast()]) {

                list.pollLast();

            }

            list.addLast(i);

            if(list.peekFirst() == i - k) {

                list.pollFirst();

            }

            if(i >= k - 1) {

                res[index ++] = nums[list.peekFirst()];

            }

        }

        return res;

    }

posted @ 2021-11-23 16:40  现在开始努力  阅读(35)  评论(0)    收藏  举报