谢谢楼主分享呀~ 看了面试的题目,然后查找了相关资料,也和楼主分享。 https://time.geekbang.org/column/article/70187 查找最多的十个用户也就是TOP K 问题,可以利用“堆”这种数据结构实现。堆也用于"优先级队列(合并有序小文件,高性能定时器)”,“求中位数”等。 当用户数量过多时,散列表要避免频繁冲突,不会选择太大的装载因子,消耗的内存空间会很大,而我们的机器可用内存空间不够了怎么办呢。可以将用户通过哈希算法分片到10个文件中,通过某个哈希算法对其求哈希值,然后同10取模,得到的结果就是这个搜索关键词被分到的文件编号。然后分别求出TOP K,把10个TOP K 放在一起,再取出登录次数最多的K个用户。
点赞 评论
牛客网
牛客网在线编程
牛客网题解
牛客企业服务