239. 滑动窗口最大值
题目
给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。
返回 滑动窗口中的最大值 。
题目链接:力扣
思路
1⃣️我的思路
普通的滑动窗口,每次都通过Max函数计算出最大值,然后放在res列表里。、
但是超时,时间复杂度是O(n * k)
2⃣️使用单调队列
单调队列的是单调递增或递减的队列,大体来看是先把K个元素放进去,把最大值加入结果集,然后,后续需要先弹出再加入最后放进结果集。但是怎样保证队列是单调的呢?
就让这个队列只保有可能成为最大值的数字就可以了,push的时候,如果队列尾端的数字比当前遍历到的数字小,那就把尾端的删了,因为它小,它不可能成为最大值,而且是把所有比当前数字小的都删掉。
那怎么知道要不要pop呢,按道理来说每次push都需要pop,但有的时候,该被pop的早就被删了,所以在主函数