滑动窗口的最大值
问题简述
给定一个长度为 n 的数组 num 和滑动窗口的大小 size ,找出所有滑动窗口里数值的最大值。
窗口大于数组长度或窗口长度为 0 的时候,返回空。
思路1:优先队列
使用优先队列(堆)维护窗口内的最大值;
细节:
堆除了要保存值还要保存索引, 用于判断当前的最大值是否还在窗口内;
Python 中的默认实现为最小堆, 需要转成最大堆(取相反数);
思路2:单调队列
使用一个严格单调队列
q
保存窗口内值的索引(保存索引,相当于保存了两个信息);这样每次将队首元素加入结果集即可;当队首元素不在窗口中时,出队;
Last updated