面试冲刺:16---300万条数据中如何找到最热门的10条搜索数据(每条搜索字符串不超过255byte,内存限制为1G)

一、题目描述

  • 现在我们要从300万字符串中找出最热门的10条搜索数据,假设搜索数据的字符串长度不超过255byte(内存限制为1GB),并给出你的解决方案的复杂度

二、解决方案

  • 大致思路如下:
    • 第一步:分析是否可以在内存中操作(300万*255byte/1024/1024/1024 = 0.7G),因此可以在内存中进行操作
    • 第二步:设计哈希,将每条搜索数据的字符串哈希之后作为key,将这个字符串的搜索次数作为value
    • 第三步:之后用长度为10的数组/或者链表来存储目前出现次数最多的10条字符串
  • 空间复杂度和时间复杂度都为O(n)

猜你喜欢

转载自blog.csdn.net/qq_41453285/article/details/107738729