滑动窗口最大值
如果用暴力解法,时间复杂度O(n)
而滑动窗口这种一端进一端出的特性,可以额外定义一个k大小的队列,而且要求是双向单调队列,这样每次返回队列的最大值就是当前窗口的最大值。
347.前k个高频元素
- 要统计元素出现的频率,可以用map,有key和value
- 要对频率排序保留前k个高频,优先级队列
优先级队列披着队列外衣的堆,对于优先级队列的操作:front取值,back添加值。
堆完全二叉树。
默认情况下priority_queue利用max-heap(大顶堆)完成对元素的排序,还有小顶堆方式。
在这道题里选择小顶堆,因为这样每次队首弹出的都是最小值,最后才能保存下k个最大值。
疑问:二叉树的建立如何写
总结
栈和队列不是容器,而是容器适配器,根据底层容器的选择来决定内存的连续性。他们的默认容器是deque