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

滑动窗口的最大值

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

import java.util.*;
public class Solution {
    public ArrayList<Integer> maxInWindows(int [] num, int size) {
        ArrayList<Integer> list = new ArrayList<>();
        //放入值和该值得下标
        PriorityQueue<int[]> queue = new PriorityQueue<>((x,y)->(y[0]-x[0]));
        for(int i = 0;i<size;i++){
            queue.add(new int[]{num[i],i});
        }
        list.add(queue.peek()[0]);
        for(int i = size;i<num.length;i++){
            queue.add(new int[]{num[i],i});
            //若堆顶不在窗口内,则一直弹出
            while(queue.peek()[1]<=(i-size)){
                queue.poll();
            }
            list.add(queue.peek()[0]);
        }
       
        return list;
    }
}
全部评论

相关推荐

Gardenia06...:刚开始学是这样的,可以看看左神和灵神都讲的不错
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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