美文网首页算法代码
滑动窗口最大值

滑动窗口最大值

作者: windUtterance | 来源:发表于2020-09-10 09:13 被阅读0次

题目描述
给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。
返回滑动窗口中的最大值。

示例

image.png

Java代码

class Solution {
    public int[] maxSlidingWindow(int[] nums, int k) {
        if(nums.length == 0) return new int[0];

        int len = nums.length;
        int[] arr = new int[len - k + 1];
        /*首先维护一个窗口的最大值
        如果新窗口的范围超过了这个最大值 或者 新加入的值大于这个最大值,那么更新最大值
        */
        int max_index = -1;
        int left = 0;
        int right = k - 1;
        while(right < len) {
            //遍历窗口寻找最大值的情况:第一个窗口还没有记录最大值、记录的最大值的索引超过了当前窗口
            if(max_index == -1 || max_index < left) {
                int max = nums[left];
                max_index = left;
                for(int i = left + 1;i <= right;i++) {
                    if(nums[i] > max) {
                        max = nums[i];
                        max_index = i;
                    }
                }
            }else if(nums[max_index] < nums[right]) { //更新最大值的情况:新加入的值比已经记录的最大值还大
                max_index = right;
            }
            arr[left] = nums[max_index];
            left++;
            right++;
        }
        return arr;
    }
}

相关文章

  • 队列的最大值

    滑动窗口的最大值给定一个数组和滑动窗口的最大值,找出所有滑动窗口里的最大值。例如输入[2, 3, 4, 2, 6,...

  • 剑指offer | 滑动窗口的最大值

    滑动窗口的最大值 给定一个数组和滑动窗口的大小,请找出所有滑动窗口里的最大值 示例输入:{2, 3, 4, 2, ...

  • 59-滑动窗口最大值、队列的最大值

    1. 滑动窗口的最大值 给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。 示例:输入:...

  • JZ-064-滑动窗口的最大值

    滑动窗口的最大值 题目描述 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,...

  • 剑指Offer66题

    1、滑动窗口的最大值 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4...

  • 面试题59(剑指offer)--队列的最大值

    题目一: 滑动窗口的最大值。给定一个数组和滑动窗口的大小,请找出所有滑动窗口里的最大值。例如,如果输入数组{2,3...

  • 剑指Offer Java版 面试题59:队列的最大值

    题目一:滑动窗口的最大值。给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3...

  • 面试题59:队列的最大值

    题目 滑动窗口的最大值给定一个数组和滑动窗口的大小,请找出所有滑动窗口里的最大值。例如,如果输入数组{2,3,4,...

  • 栈和队列

    剑指offer所有的题目总结 牛客 滑动窗口的最大值 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值...

  • 剑指offer 59-1 滑动窗口内的最大值

    给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。 使用一个队列记录滑动窗口内的最大值....

网友评论

    本文标题:滑动窗口最大值

    本文链接:https://www.haomeiwen.com/subject/bapqjktx.html