问答

当前位置
  • 首页
  • 问答
  • 为什么之前的例子heap保存前10名,跌出前10名的元素不会再回来,而歌曲的例子则可以?

为什么之前的例子heap保存前10名,跌出前10名的元素不会再回来,而歌曲的例子则可以?

  • Ta: 贺鹏程

此问题来源于微课:海量数据处理算法与面试题全集
"在线 Hash + Heap 的方法“可能”不再奏效,因为跌出前10名的歌曲,还可能在过短时间后回到前10名。而之前介绍中我们在 Heap 中保存的是前10名,跌出前10名的元素不再有机会回到前10名,则无需保存。"
请问为什么歌曲跌出前10名可能再回到前10名,而前面的real-time的例子用heap保存前10名,则跌出前10名的元素不能再回到前10名呢?

1 个回复

2019-09-08 serenity

real-time的例子中,数据流中的元素是数字,目标是寻找前k大的数字,当前不是前k大的数字,在后续的遍历中也不会成为前k大。
而歌曲的例子中,数据流中的是被点播的歌曲,目标是找到点播量前十的歌曲,需要先根据数据流统计当前各歌曲的点播量,找出点播量前十的歌曲,遍历数据流时,歌曲的点播量一直在变化,所以会存在本来点播量不是前十的歌曲,因为点播量增加和进入前十的情况

我来回答

您没有权限

为提高问答质量,问答版块发言权限只向九章学员开放

登录 注册

© Jiu Zhang 2013-. All rights reserved. 京ICP备16004690号-1