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

滑动窗口的最大值

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

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

        ret.add(queue.peekFirst());
        for(int i = size; i < num.length; i++) {
            if(num[i-size] == queue.peekFirst()) {
                queue.pollFirst();
            }
            while(!queue.isEmpty() && queue.peekLast() <= num[i]) {
                queue.pollLast();
            }
            queue.addLast(num[i]);
            ret.add(queue.peekFirst());
        }
        return ret;
    }
}
全部评论

相关推荐

会飞的猿:本人来了,手一抖转错了,我是学生,能还给我吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务