239.滑动窗口最大值
这是一道单调队列模板题。
单调队列:队列中的元素符合某种单调性,比如递增,递减。单调队列用双端队列
deque
实现。
在本题中,我们使用单调队列的队头维护滑动窗口内的最大值的索引:对于第
i
个元素:
- 保证队头元素的索引在滑动窗口内,即判断
i - q.front() >= k
- 保证队列中的元素是递减的,即判断
nums[i] > nums[q.back()]
- 把索引
i
加入到队列中- 若
i +1
大于等于滑动窗口长度k
,则认为滑动窗口已经全部滑入数组,因此把对头索引对应的值nums[q.front()]
加入到答案中