滑动窗口的最大值

    xiaoxiao2022-07-13  166

    1.

    2.

    import java.util.ArrayList; import java.util.LinkedList; public class Solution { public ArrayList<Integer> maxInWindows(int [] num, int size){ ArrayList<Integer> res=new ArrayList<Integer>(); if(num==null||num.length==0||size<=0||num.length < size){ return res; } LinkedList<Integer> deque=new LinkedList<Integer>(); for(int i=0;i<num.length;i++){ while(!deque.isEmpty()&&deque.peekFirst()==i-size){// [i-k+1,i]窗口共K个数字 deque.pollFirst(); } //队列中储存索引i,保持队列中的nums[i]是绝对降序的 while(!deque.isEmpty()&&num[deque.peekLast()]<num[i]){ deque.pollLast(); } deque.offer(i); if(i-size+1>=0){//索引从 size-1 遍历到 num.length 都被保存 res.add(num[deque.peekFirst()]); } } return res; } }

     

    最新回复(0)