Dados los números de una matriz, hay una ventana deslizante de tamaño k que se mueve desde el extremo izquierdo de la matriz hacia la derecha. Solo puede ver los k números en la ventana. Cada vez que la ventana deslizante se mueve hacia la derecha una posición.
Solución Java
public int[] maxSlidingWindow(int[] nums, int k) { if(nums==null||nums.length==0) return new int[0]; int[] result = new int[nums.length-k+1]; LinkedList<Integer> deque = new LinkedList<Integer>(); for(int i=0; i<nums.length; i++){ if(!deque.isEmpty()&&deque.peekFirst()==i-k) deque.poll(); while(!deque.isEmpty()&&nums[deque.peekLast()]<nums[i]){ deque.removeLast(); } deque.offer(i); if(i+1>=k) result[i+1-k]=nums[deque.peek()]; } return result; } |