忘记这个题上次做有没有整理了,第二遍做又没有做出来。 这个题必须用额外空间建一个deque,因为在加入新的元素进入window时候, 是从后向前 把小于新元素的值对应的index pop掉的,
public int[] maxSlidingWindow(int[] nums, int k) {
LinkedList
deque = new LinkedList
();
List
list = new ArrayList
();
for(int i=0; i
= k-1) list.add(nums[deque.peekFirst()]); //注意这个操作的位置,是在已经记录了最大值,并且新的(k+1)值加入前 if(!deque.isEmpty() && i - deque.peek() + 1 == k ) deque.pollFirst(); } int[] res = new int[list.size()]; for(int i=0; i