代码随想录算法训练营day13|239、347、总结

239

滑动窗口移动过程像队列,滑动过程中,先pop后push.

大顶堆:排序好的递减二叉树,该问题不合适

大顶堆:每个结点的值都大于或等于其左右孩子结点的值
小顶堆:每个结点的值都小于或等于其左右孩子结点的值

谈谈堆排序,大顶堆,小顶堆? - 简书

采用方式:最大值一直放在队列口,其他元素从back排出。

是在遍历原数组上进行操作的,再加入到新的容器vector中

347

处理方法:

1.可以使用map数据结构,

2.利用堆来处理数据:如果使用大顶堆,pop出去的会把大的元素排出去。采用小顶堆。

3.c++中有现成数据结构,采用优先级队列:其实就是一个披着队列外衣的堆,因为优先级队列对外接口只是从队头取元素,从队尾添加元素,再无其他取元素的方式,看起来就是一个队列。

优先级队列要定位为 左大于右,才能算小顶堆,和快排等正好相反,优先级队列的定义正好反过来了,可能和优先级队列的源码实现有关(我没有仔细研究),我估计是底层实现上优先队列队首指向后面,队尾指向最前面的缘故!

4.定义result数组,存储前k个元素。

总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值