题解 | #滑动窗口的最大值#

滑动窗口的最大值

https://www.nowcoder.com/practice/1624bc35a45c42c0bc17d17fa0cba788

思路

本题思路其实不难,使用两个变量,一个存储窗口的首位置,另外一个存储窗口中的最大值,使用while循环更新窗口首位置,使用for循环从窗口首位置遍历size长度,比较出的最大值加入集合最后返回即可。具体请看代码注释

代码

import java.util.*;
public class Solution {
    public ArrayList<Integer> maxInWindows(int [] num, int size) {
        // 创建集合存储滑动窗口的最大值
        ArrayList<Integer> windowMaximums = new ArrayList<>();
        // 对传入值做校验,窗口大于数组长度或窗口长度为0的时候,返回空集合(别问我为什么不返回null)。
        if (num.length < size || size == 0) {
            return windowMaximums;
        }
        // 创建变量标记窗口首位置
        int headLocation = 0;
        // 创建变量标记窗口最大值
        int windowMaximum = Integer.MIN_VALUE;
        // 使用while循环更新窗口首位置,窗口首位置不应超过数组长度减去窗口长度
        while (headLocation <= num.length - size) {
            // 使用for循环遍历窗口,寻找窗口最大值
            for (int i = headLocation; i < headLocation + size; i++) {
                if (windowMaximum < num[i]) {
                    windowMaximum = num[i];
                }
            }
            // 循环结束后更新窗口首位置
            headLocation++;
            // 将最大值加入集合
            windowMaximums.add(windowMaximum);
            // 重置最大值
            windowMaximum = Integer.MIN_VALUE;
        }
        return windowMaximums;
    }
}
全部评论

相关推荐

Java抽象带篮子:简历怎么写可以看看我发的帖子,你的第一个是实习经历吗?那怎么写的是你的第一个练手项目呢?简历写的怎么样直接投小厂面试一下就知道了
没有实习经历,还有机会进...
点赞 评论 收藏
分享
05-12 17:00
门头沟学院 Java
king122:你的项目描述至少要分点呀,要实习的话,你的描述可以使用什么技术,实现了什么难点,达成了哪些数字指标,这个数字指标尽量是真实的,这样面试应该会多很多,就这样自己包装一下,包装不好可以找我,我有几个大厂最近做过的实习项目也可以包装一下
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-04 18:25
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务