解法一
思路:滑动窗口,维护一个size为k的大堆。滑动过程中把最老的元素poll,offer最新的元素后调整堆。
时间复杂度:O(n * logk)
解法二(Recommend)
由于窗口大小固定,我们并不需要去维持大堆,只要记录窗口内的最大值即可。这里采用 双关队列(Dequeue) 的思路。
时间复杂度:O(n)
source code
1 | // Runtime: 192 ms, faster than 18.08% of JavaScript online submissions for Sliding Window Maximum. |
test cases
1 | test("test1", ()=>{ |