1. 239.滑动窗口最大值
我看到的思路就是之前的滑动窗口,快慢指针,但是怎么用栈实现呢?难道每次移动都窗口从头遍历吗?或者把当前最大值的下标也存起来?那移动之后如果不在了呢?所以栈不行.看了题解知道是用的单调队列.然后我以为只要随着滑动窗口变化就好了,不需要弄成排序的单调队列,但是这样的时间复杂度还是O(nxk)
1.1tips
- 本题的单调队列是用js的class构建的
写法是class MyQueue{}
不加();第一行的queue;是个共有字段声明,可以不写,因为在constructor里定义就行了.
constructor写法:constructor(){}
其他属性的写法:enqueue(value){}
- enqueue的写法里,判断是否比当前queue最后元素大的写法用的是
end !== undifined
这是因为如果出现queue[-1]
,js不会报错,而是返回undefined - 弱智错误:
let i,j = 0
没给i赋值