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

滑动窗口的最大值

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

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param num int整型一维数组
     * @param size int整型
     * @return int整型ArrayList
     */
    public  ArrayList<Integer> maxInWindows (int[] num, int size) {
        if (size > num.length || size==0 || num.length==0) {
            return new ArrayList<Integer>();
        }
        ArrayList<Integer>  list = new ArrayList<Integer>();
        int index = num.length - size + 1;
        for (int i = 0; i < index; i++) {
            list.add(getMax(Arrays.copyOfRange(num, i, i + size)));
        }
        return list;
    }

    public   int getMax(int[] subNum) {
        Stack<Integer> stack = new Stack<>();
        for (int i = 0; i < subNum.length; i++) {
            if (stack.isEmpty()) {
                stack.push(subNum[i]);
            } else {
                if (subNum[i] > stack.peek()) {
                    stack.push(subNum[i]);
                }
            }
        }
        return stack.pop();
    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
03-29 08:32
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务