1 题目描述
2 解题思路
这是Java的一个笨办法,用的是两层循环实现
- 变量i, 用来进行外层循环,保证遍历了整个数组的元素,是
nums.length - k + 1
个 - 变量j,用来进行内层循环,构建临时数组,
- 临时数组,每次三个,设置循环结束条件
j< k
,这样每次就能产生三个数的一个临时数组
对临时数组,排序之后,取数组的最后一个元素就是最大值(Java 默认排序是升序)
3 解决代码
- Java 代码
class Solution {
public int[] maxSlidingWindow(int[] nums, int k) {
if(nums == null || nums.length == 0){
return new int[0];
}
int[] res = new int[nums.length - k + 1];
int[] window = new int[k];
for(int i = 0; i < nums.length -k + 1; i++){
for (int j = 0; j < k; j++){
//构成临时的窗口数组
window[j] = nums[i + j];
}
//对临时窗口进行排序然后取最大值
Arrays.sort(window);
res[i] = window[k - 1];
}
return res;
}
}