/**
* @param {number[]} nums
* @param {number} k
* @return {number[]}
*/
var maxSlidingWindow = function (nums, k) {
// if (k === 1) return nums;
// let deQueue = [];
// let res = [];
// for (let right = 0; right < nums.length; right++) {
// let num = nums[right];
// while (deQueue.length && deQueue[deQueue.length - 1] < num) {
// deQueue.pop();
// }
// deQueue.push(nums[right]);
// let left = right - k + 1;
// if (left >= 0) {
// res.push(deQueue[0]);
// // 滑动过程中,如果序列中的最大元素即退出窗口,则移除队列头部元素
// if (nums[left] === deQueue[0]) {
// deQueue.shift();
// }
// }
// }
// 解法二:
//https://www.bilibili.com/video/BV1tT4y117kj/?spm_id_from=333.337.search-card.all.click&vd_source=5f94d386b0af0c7308b20ba35088d7f8
const queue = new Array()
let len= nums.length
let ans =[]
for(let i=0;i<len;i++){
// 做比较保持递减
while(queue.length && nums[i]>nums[queue[queue.length-1]]) queue.pop()
queue.push(i)
//将一直保持k个
if(i-k ===queue[0]) queue.shift()
// 返回每个k个中的最大值
if(i>=k-1) ans.push(nums[queue[0]])
}
return ans
};