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

滑动窗口的最大值

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

import java.util.*;
public class Solution {
    public ArrayList<Integer> maxInWindows(int [] num, int size) {
        Deque<Integer> que = new LinkedList<>();
        ArrayList<Integer> list = new ArrayList<>();
        for(int i = 0; i < size; ++i){
            while(!que.isEmpty() && num[i] > que.peekLast()){
                que.pollLast();
            }
            que.addLast(num[i]);
        }
        list.add(que.peekFirst());
        for(int i = size; i < num.length; i++){
            if(num[i-size] == que.peekFirst()){
                que.pollFirst();
            }
            while(!que.isEmpty() && num[i] > que.peekLast()){
                que.pollLast();
            }
            que.addLast(num[i]);
            list.add(que.peekFirst());
        }
        return list;
    }
}


全部评论

相关推荐

刘湘_passion:出国旅游?那就小心你的腰子咯
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务