问题描述:
给你一个整数数组 nums
,有一个大小为 k
的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k
个数字。滑动窗口每次只向右移动一位。
返回 滑动窗口中的最大值 。
示例 1:
输入:nums = [1,3,-1,-3,5,3,6,7], k = 3 输出:[3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值 --------------- ----- [1 3 -1] -3 5 3 6 7 3 1 [3 -1 -3] 5 3 6 7 3 1 3 [-1 -3 5] 3 6 7 5 1 3 -1 [-3 5 3] 6 7 5 1 3 -1 -3 [5 3 6] 7 6 1 3 -1 -3 5 [3 6 7] 7
示例 2:
输入:nums = [1], k = 1 输出:[1]
提示:
1 <= nums.length <= 105
-104 <= nums[i] <= 104
1 <= k <= nums.length
上代码,拿去即可运行:
package com.onlyqi.daydayupgo01.suanfa;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Test11 {
public static void main(String[] args) {
int[] nums = {1, 3, -1, -3, 5, 3, 6, 7};
System.out.println(getMaxListNum(nums, 3));
}
public static List<Integer> getMaxListNum(int[] nums, Integer k) {
List<Integer> result = new ArrayList<>();
for (int i = 0; i <= (nums.length - k); i++) {
List<Integer> temp = new ArrayList<>();
int count = (i + k) > nums.length ? nums.length : (i + k);
for (int j = i; j < count; j++) {
temp.add(nums[j]);
}
result.add(Collections.max(temp));
}
return result;
}
}
运行结果:
慢慢来才是最快的方法--天涯明月 共勉
我要刷300道算法题,第130道 。 希望自己可以坚持下去 。