滑动窗口

滑动窗口的最大值

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

win中储存滑动窗口中非递增的序列(或者序列对应的下标都可)。

import java.util.*;
public class Solution {
    public ArrayList<Integer> maxInWindows(int [] num, int size){
        ArrayList<Integer> list=new ArrayList<>();
        if(num==null||num.length==0||size<=0) return list;
        Deque<Integer> win=new ArrayDeque<>();
        for(int l=0, r=0; r<num.length; r++){
            if(r-l>size-1) {
                if(win.peekFirst()==num[l]) 
                    win.removeFirst();
                l++;
            }
            while(!win.isEmpty()&&win.peekLast()<num[r]) 
                win.removeLast();
            win.addLast(num[r]);
            if(r-l==size-1) list.add(win.peekFirst());
        }
        return list;
    }
}
全部评论

相关推荐

10-30 10:16
南京大学 Java
龚至诚:给南大✌️跪了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务