摘要: 1、海量数据分布在100台电脑中,想个办法高校统计出这批数据的TOP10。方案1:s在每台电脑上求出TOP10,可以采用包含10个元素的堆完成(TOP10小,用最大堆,TOP10大,用最小堆)。比如求TOP10大,我们首先取前10个元素调整成最小堆,如果发现,然后扫描后面的数据,并与堆顶元素比较,如果比堆顶元素大,那么用该元素替换堆顶,然后再调整为最小堆。最后堆中的元素就是TOP10大。2、 1000万字符串,其中有些是重复的,需要把重复的全部去掉,保留没有重复的字符串。请怎么设计和实现?方案1:这题用trie树比较合适,hash_map也应该能行。3、一个文本文件,找出前10个经常出现的词, 阅读全文
posted @ 2013-10-19 21:39 曾先森在努力 阅读(536) 评论(0) 推荐(0) 编辑
摘要: 参考博文:http://blog.csdn.net/v_july_v/article/details/6897097第一部分、Trie树1.1、什么是Trie树 Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。 Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。它有3个基本性质:根节点不包含字符,除根节点外每一个节点都只包含一个字符。从根节点到某一节点,路径上 阅读全文
posted @ 2013-10-19 21:31 曾先森在努力 阅读(1613) 评论(0) 推荐(0) 编辑
摘要: 题目介绍:输入为不断地数字流,实时显示出当前已经输入的数字序列的中位数解答:求中位数的方法很多,对于大数据量最经典是桶的计数方法,但是对于这个问题不适用,因为数据是不断变化的可以用最大堆和最小堆来解答这个问题:1.假设当前的中位数为m,其中最大堆维护的是=m的数字序列,但是两个堆都不包含m2.当新的数字到达时,比如为a,将a与m进行比较,若a=2 ,则将m加入到元素个数少的堆中,然后从元素个数多的堆将根节点赋值到m,最后重建两个最大堆和最小堆,返回到2转:http://yaronspace.cn/blog/index.php/archives/1306 阅读全文
posted @ 2013-10-19 19:38 曾先森在努力 阅读(926) 评论(0) 推荐(0) 编辑