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

滑动窗口的最大值

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

import java.util.*;
public class Solution {
    public ArrayList<Integer> maxInWindows(int [] num, int size) {
        ArrayList<Integer> res = new ArrayList<>();
        if (num == null) return res;
        int len = num.length;
        if (len == 0 || len < size || size == 0) return res;
        int maxNum = Integer.MIN_VALUE;
        for (int i = 0; i < len - size + 1; ++i) {
            if (i == 0) {
                for (int j = i; j < size; ++j) {
                    maxNum = Math.max(maxNum, num[j]);
                }
            } else {
                if (num[i + size - 1] > maxNum) maxNum = num[i + size - 1];
                else if (num[i - 1] == maxNum) {
                    maxNum = Integer.MIN_VALUE;
                    for (int j = i; j < size + i; ++j) {
                        maxNum = Math.max(maxNum, num[j]);
                    }
                }
            }
            res.add(maxNum);
        }
        return res;
    }
}

当窗口从下标 0 开始时需要遍历一次窗口大小来寻找最大值,而在此后可以判断当前最大值和所要添加值之间的大小以及判断即将离开窗口的值是否等于当前的最大值,然后再去判断是否需要再次遍历寻找最大值。

全部评论

相关推荐

家人们,我现在真的好纠结。我是26届的,目前还没有实习过。我现在的情况是,想参加秋招,但是感觉自己的简历特别空,没有实习经历会不会秋招直接凉凉啊?可我又听说现在很多公司对26届实习生也不太感冒,说什么不确定性大。而且我最近在准备考公,时间上也有点冲突。要是把时间花在实习上,备考时间就少了。但要是不实习,又怕以后就业有问题😫有没有懂行的友友帮我分析分析:26届现在不实习,秋招找工作真的会很难吗?考公和实习该怎么平衡啊?如果现在不实习,考完公再去找实习还来得及吗?真的太焦虑了,希望大家能给我点建议🙏
小破站_程序员YT:我可能和大家的观点不一样。人的精力是有限的,不能既要还要。你又想实习又想考公最后又要秋招上岸,我觉得哪有那么多的选择。你如果想考上岸,那就全力以赴。如果想秋招上岸,就继续投实习,投没了,就继续准备秋招,秋招不行继续春招。别到最后,考公没上岸,觉得是花了时间浪费在找实习上了, 秋招没上岸,觉得是浪费时间准备考公去了。我是认为很难说可以去平衡 不喜勿喷,可以叫我删除
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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