239
滑动窗口移动过程像队列,滑动过程中,先pop后push.
大顶堆:排序好的递减二叉树,该问题不合适
大顶堆:每个结点的值都大于或等于其左右孩子结点的值
小顶堆:每个结点的值都小于或等于其左右孩子结点的值
采用方式:最大值一直放在队列口,其他元素从back排出。
是在遍历原数组上进行操作的,再加入到新的容器vector中
347
处理方法:
1.可以使用map数据结构,
2.利用堆来处理数据:如果使用大顶堆,pop出去的会把大的元素排出去。采用小顶堆。
3.c++中有现成数据结构,采用优先级队列:其实就是一个披着队列外衣的堆,因为优先级队列对外接口只是从队头取元素,从队尾添加元素,再无其他取元素的方式,看起来就是一个队列。
优先级队列要定位为 左大于右,才能算小顶堆,和快排等正好相反,优先级队列的定义正好反过来了,可能和优先级队列的源码实现有关(我没有仔细研究),我估计是底层实现上优先队列队首指向后面,队尾指向最前面的缘故!
4.定义result数组,存储前k个元素。
总结