哈希之海量数据面试题

哈希切割TopK问题

给一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址?

1) 我们首先想到的是对文件进行切割,把它分成1000等份,每一份差不多100M左右。但是在切割时要注意,不能随便切割。如果我们随便进行切割,统计出每个文件中出现次数最多的IP地址,这不一定是整个文件出现次数最多的IP地址。假设,一个IP地址,在第一个文件,它时出现次数第二多的,在第二个文件呢也是如此,它不是每个文件出现次数最多的,但是它可能是整个100G文件出现次数最多的,因此,我们不能直接进行切割。
2) 我可以用过哈希映射,用点分十进制的IP地址转化为整数,利于哈希函数(哈希函数采用直接定址法),求出IP地址所对应文件的编号,将这些IP地址分割到不同文件,相同的地址一定在同一个文件当中
3) 利用键值对,将IP地址作为键,将IP地址出现的次数做为关键码,然后建一个小堆,,在向堆中插入元素时,先向堆中插入K个元素,以后再插入元素时,先于堆顶元素进行比较,如果小于堆顶元素,不做处理;如果大于,则将堆顶元素删除,将此元素重新插入堆中,当遍历完所有IP地址后,堆中保存的元素就是出现次数最多的K个。

位图应用

给定100亿个整数,设计算法找到只出现一次的整数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值