我是小米,一个喜欢分享技术的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货!
哈喽大家好!我是你们的技术小伙伴小米,今天又来和大家分享一个非常实用的算法题!假设我们现在有1000w个查询记录,这些记录中有很多重复的内容,但去重后大概只剩下300w个。那么问题来了,我们如何在1G内存的限制下,统计出最热门的10个查询串呢?今天我们将会使用两种经典的算法:HashMap法和前缀树法,来实现这个需求。
问题描述
首先,我们有1000w个查询串,虽然看起来数据量巨大,但由于重复度较高,去重后只剩300w个独立的查询串。我们需要从这些查询串中找出最热门的前10个查询串,并且要求使用的内存不能超过1G。
方法一:HashMap法
思路解析
HashMap法是一种直接且有效的方法。我们可以利用HashMap来存储每个查询串及其出现的次数,然后通过小顶堆来维护前10个最热门的查询串。具体的操作步骤如下:
- 创建HashMap