题解 | #滑动窗口的最大值#
滑动窗口的最大值
https://www.nowcoder.com/practice/1624bc35a45c42c0bc17d17fa0cba788
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param num int整型一维数组
* @param size int整型
* @return int整型ArrayList
*/
public ArrayList<Integer> maxInWindows (int[] num, int size) {
ArrayList<Integer> lists = new ArrayList<Integer>();
if(size>num.length||size==0)
return lists;
Deque<Integer> deque = new LinkedList<Integer>();
for(int i=0;i<num.length;i++){
//1.入队列
while(!deque.isEmpty()&&num[deque.getLast()]<num[i])
deque.pollLast();
deque.addLast(i);
//2.出队列
if(i-deque.getFirst()>=size)
deque.pollFirst();
//3.记录答案
if(i>=size-1)
lists.add(num[deque.getFirst()]);
}
return lists;
}
}
