手撕算法

手写优先队列,实现 add(),poll(),peek() 。这三个函数是一个怎样的过程

  1. 用数组实现最小堆
  2. add(): 首先先判断是否需要扩容,然后把新值放到堆的右下角,然后从下至上依次比较右下元素与其父节点的值大小,右下小则交换,直到右下角大才退出循环。
  3. pop(): 先暂存堆顶元素值,再把右下角值赋给堆顶,再在循环里从上往下比较父节点与其左右子节点大小
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-11 11:29
点赞 评论 收藏
分享
头顶尖尖的程序员:我也是面了三四次才放平心态的。准备好自我介绍,不一定要背熟,可以记事本写下来读。全程控制语速,所有问题都先思考几秒,不要急着答,不要打断面试官说话。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务