题解 | #滑动窗口的最大值#
滑动窗口的最大值
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) { if (size > num.length || size==0 || num.length==0) { return new ArrayList<Integer>(); } ArrayList<Integer> list = new ArrayList<Integer>(); int index = num.length - size + 1; for (int i = 0; i < index; i++) { list.add(getMax(Arrays.copyOfRange(num, i, i + size))); } return list; } public int getMax(int[] subNum) { Stack<Integer> stack = new Stack<>(); for (int i = 0; i < subNum.length; i++) { if (stack.isEmpty()) { stack.push(subNum[i]); } else { if (subNum[i] > stack.peek()) { stack.push(subNum[i]); } } } return stack.pop(); } }