# 239. 滑动窗口最大值
# 解题思路
最粗暴的方式就是遍历数组:
- 首先判断数组长度是否小于等于滑动窗口大小,如果小于,则直接返回数组中的最大值;
- 否则,遍历数组,每次取滑动窗口大小,并判断当前值是否大于最大值,如果大于,则更新最大值;
- 每次遍历数组时,将最大值记录在数组中;
var maxSlidingWindow = function (nums, k) {
var len = nums.length
var result = []
var maxVlaue = -Infinity
if (len <= k) {
while (len--) {
if (nums[len] > maxVlaue) {
maxVlaue = nums[len]
}
}
return [maxVlaue]
}
for (var i = 0; i <= len - k; i++) {
let nums2 = nums.slice(i, i + k)
let len2 = nums2.length
maxVlaue = -Infinity
while (len2--) {
if (nums2[len2] > maxVlaue) {
maxVlaue = nums2[len2]
}
}
result.push(maxVlaue)
}
return result
}
更进一步可以使用优先队列,且还能进一步优化,具体解法见官方题解 (opens new window)。