publicint[] maxSlidingWindow(int[] nums, int k) { int len = nums.length; if (len == 0){ returnnewint[0]; } //定义结果数组 int[] res = newint[len - k + 1]; //maxInd记录每次最大值的下标,max记录最大值 int maxInd = -1, max = Integer.MIN_VALUE;
for (int i = 0; i < len - k + 1; i++) { //判断最大值下标是否在滑动窗口的范围内 if (maxInd >= i){ //存在就只需要比较最后面的值是否大于上一个窗口最大值 if (nums[i + k - 1] > max){ max = nums[i + k - 1]; //更新最大值下标 maxInd = i + k - 1; } } //如果不在就重新寻找当前窗口最大值 else { max = nums[i]; for (int j = i; j < i + k; j++) { if (max < nums[j]) { max = nums[j]; maxInd = j; } } } res[i] = max; } return res; }