找到100亿个URL中的重复URL以及搜索词汇的topK问题
来源:互联网 发布:网易数据分析师笔试题 编辑:程序博客网 时间:2024/05/22 03:06
有一个包含100亿个URL的文件,假设每个URL占用64B,请找出其中所有重复的URL。
这类问题一种解决方案(我只想到了这一种)
将文件通过哈希函数成多个小的文件,由于哈希函数所有重复的URL只可能在同一个文件中,在每个文件中利用一个哈希表做次数统计。就能找到重复的URL。这时候要注意的就是给了多少内存,我们要根据文件大小结合内存大小决定要分割多少文件
topK问题和重复URL其实是一样的重复的多了才会变成topK,其实就是在上述方法后获得所有的重复URL排个序,但是有点没必要,因为我们要找topK时,最极端的情况也就是topK在用一个文件中,所以我们只需要每个文件的topK个URL,之后再进行排序,这样就比找出全部的URL在排序方法优秀。还有一个topK个URL到最后还是需要排序,所以我们在找每个文件的topK时,是否只需要找到topK个,其中顺序不用管,那么我们就可以用大小为K的小根堆遍历哈希表。这样又可以降低查找的时间。
这里我来讲一下为什么用小根堆。
小根堆是一棵完全二叉树存在如下特性
(1)若树根结点存在左孩子,则根结点的值(或某个域的值)小于等于左孩子结点的值(或某个域的值);
(2)若树根结点存在右孩子,则根结点的值(或某个域的值)小于等于右孩子结点的值(或某个域的值);
(3)以左、右孩子为根的子树又各是一个堆。
建最小堆的过程,从最后一个叶节点的父节点开始,往前逐个检查各个节点,看其是不是符合父节点小于它的子节点,如果不小于,则将它的 子节点中最小的那个节点与父节点对换;否则,不交换,
限于篇幅,我将在下一篇中,写一下最小堆的c++实现
- 找到100亿个URL中的重复URL以及搜索词汇的topK问题
- 找到100亿个url中重复的url以及搜索词汇的topk问题
- 阿里电话面试问题----100万个URL如何找到出现频率最高的前100个?
- syfomy自动根据url中的id找到对应的记录
- ASP中文url的2个问题
- 维护100亿个URL
- urlrewriter的使用中的url中文问题
- 获取Url中的地址的参数问题,
- asp.net 2.0中的URL重写以及urlMappings问题
- asp.net2.0中的URL重写以及urlMappings问题
- JAVA析取百度搜索前100个结果的URL、标题和摘要
- url参数以及url的编码解码
- URL、URI 以及 URL-Pattern 的区别
- 使用jquery获取url以及使用jquery获取url参数以及中文编码乱码的问题
- 总算找到API的URL了
- iOS 如何找到软件的URL Schemes?
- git config找到下载的路径URL
- url传递中的特殊符号的编码以及中文编码
- 数据库设计两个使用技巧
- 10037---深入浅出JMS(三)--ActiveMQ简单的HelloWorld实例
- MA5889,奇岩MA5889,USB智能识别充电(双通道)解决方案
- java 和c#泛型
- Request的getParameter和getAttribute方法的区别
- 找到100亿个URL中的重复URL以及搜索词汇的topK问题
- 朋友安利我的一本书“只有偏执狂才能成功”
- 各类容器迭代器失效情况
- 【poj3258】River Hopscotch
- svn版本回退
- AngularJs1.X 项目文件结构
- 最新spring 4 框架和 security相关包下载
- Red packet (二分)
- C++实现简单的定时器