leetCode-Record
leetCode-Record copied to clipboard
面试题59 - I. 滑动窗口的最大值
这题要维护一个类似于双端队列的数据结构,用js的数组就可以模拟了。
这个队列里面存的是数组大小由大到小的元素的下标
/**
* @param {number[]} nums
* @param {number} k
* @return {number[]}
*/
var maxSlidingWindow = function(nums, k) {
if(!nums || nums.length < 2) {
return nums;
}
let list = [];
let result = Array(nums.length - k + 1).fill(0)
for(let i = 0;i<nums.length;i++) {
while(list.length && nums[list[list.length - 1]] <= nums[i]) {
list.pop()
}
list.push(i);
if(list[0] <= i-k) {
list.shift()
}
if (i - k + 1 >= 0) {
result[i-k+1] = nums[list[0]]
}
}
return result;
};