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

滑动窗口的最大值

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

单调队列——java版
https://liyanzu0926.github.io/2022/03/13/page-4/

public class Solution {
    public ArrayList<Integer> maxInWindows(int [] num, int size) {
        Deque<Integer> queue = new LinkedList<>();
        ArrayList<Integer> res = new ArrayList<>();
        // 初始窗口
        for(int i = 0; i < size; i++){
            while(!queue.isEmpty() && num[i] > num[queue.getLast()]){
                queue.pollLast();
            }
            queue.offer(i);
        }
        res.add(num[queue.getFirst()]);
        for(int i = size; i < num.length; i++){
            // 维护单调队列
            while(!queue.isEmpty() && num[i] > num[queue.getLast()]){
                queue.pollLast();
            }
            queue.offer(i);
            // 将下标不在窗口中的元素移出窗口
            while(!queue.isEmpty() && queue.getFirst() < i - size + 1){
                queue.pollFirst();
            }
            res.add(num[queue.getFirst()]);
        }
        return res;
    }
}
全部评论

相关推荐

暮雨轻歌:看起来hr不能接受我菜查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务