一道面试题
2013-07-01 10:42
190 查看
从300万字符串中找到最热门的10条 搜索的输入信息是一个字符串,统计300万输入信息中的最热门的前10条,我们每次输入的一个字符串为不超过255byte,内存使用只有1G。请描述思想,写出算法(c语言),空间和时间复杂度。
300万个字符串最多(假设没有重复,都是最大长度)占用内存3M*1K/4=0.75G。所以可以将所有字符串都存放在内存中进行处理。 可以使用key为字符串(事实上是字符串的hash值),值为字符串出现次数的hash来统计每个每个字符串出现的次数。并用一个长度为10的数组/链表来存储目前出现次数最多的10个字符串。 这样空间和时间的复杂度都是O(n)。
相关文章推荐
- 一道C语言面试题
- 一道有意思的Google面试题
- 写出float x 与“零值”比较的if语句——一道面试题分析
- 一道淘汰85%面试者的百度开发者面试题参考答案
- 一道关于位段及大小端的面试题
- 一道博弈的面试题及其算法正确性证明
- 一道存储过程面试题
- 一道关于宏的面试题及解答
- 一道面试题Lintcode196-Find the Missing Number
- 以一道union面试题说明大端小端和内存高位低位
- 一道面试题引起的好奇:数字千分位
- 由一道淘宝面试题到False sharing问题
- 今天在群里看到一道面试题,做了两种解法
- 一道多线程面试题分析(控制输出顺序)
- 有道的一道面试题 突然觉得跟word ladder有些关系
- 华为面试题——一道关于指针方面的编程题(C/C++)
- 一道简单的面试题(求较小的值,不能用 比较运算符 if-else ?: while for 内嵌汇编 递归 第三方函数)(zt)
- 一道 SQL 面试题
- 找工作练手--一道面试题