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

滑动窗口的最大值

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

public class Solution {
    // 若当前最大值的下标在滑动窗口内, 那么 新的最大值的 为 当前滑动窗口最后一个值或者 当前最大值
    // 若当前最大值的下标不在滑动窗口内, 那么在窗口内找最大值
    public ArrayList<Integer> maxInWindows(int [] num, int size) {
        int maxIndex = -1;
        ArrayList<Integer> returnList = new ArrayList<>();
        if(size == 0){
            return returnList;
        }
        for(int i = 0; i < num.length - size + 1; i++){
            if(maxIndex >= i && maxIndex <= i + size - 1){ // 最小值下标在当前滑动窗口范围之内
                maxIndex = num[maxIndex] >= num[i + size -1] ? maxIndex : i + size -1;
                returnList.add(num[maxIndex]);
            }else{
                // 在当前窗口内查找最小值
                maxIndex = i;
                for(int j = i + 1; j <= i + size -1; j++){
                    if(num[j] > num[maxIndex]){
                        maxIndex = j;
                    }
                }
                returnList.add(num[maxIndex]);
            }
        }
        return returnList;
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-04 18:25
点赞 评论 收藏
分享
06-17 21:57
门头沟学院 Java
白友:噗嗤,我发现有些人事就爱发这些,明明已读不回就行了,就是要恶心人
点赞 评论 收藏
分享
湫湫湫不会java:先投着吧,大概率找不到实习,没实习的时候再加个项目,然后把个人评价和荣誉奖项删了,赶紧成为八股战神吧,没实习没学历,秋招机会估计不多,把握机会。或者说秋招时间去冲实习,春招冲offer,但是压力会比较大
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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