Loading

剑指 Offer 59 - I. 滑动窗口的最大值

class Solution {
    public int[] maxInWindows(int[] nums, int k) {
        if(nums == null || nums.length == 0) return new int[0];
        
        int[] res = new int[nums.length - k + 1];
        Deque<Integer> q = new LinkedList<>();
        int j = 0;
        for(int i = 0; i < nums.length; i ++){
            if(!q.isEmpty() && i - q.peek() >= k){
                q.poll(); //弹出第一个
            }  
            
            while(!q.isEmpty() && nums[i] >= nums[q.peekLast()]){
                q.pollLast(); //保持单调队列
            }
            q.offer(i); //入队
            if(i >= k - 1){
                res[j++] = nums[q.peek()];  //res更新
            }
            
        }
        
        return res;
        
    }
}
posted @ 2021-04-16 17:19  想用包子换论文  阅读(27)  评论(0编辑  收藏  举报