← 返回目录

2. TOP N问题

第 30 / 42 卷日期:

小文件【A1-AN中的某一个】;遍历文件B做同样的处理;会得到对应的B1-BN个文件【A/B两个文件使用相同的哈希函数,保证文件之间的一一对应】

  1. 逐个比较<A1,B1>文件对【不对应的小文件不可能有相同的URL】;此时数据量足够小,可以装载到

hashmap中进行对比,最后得到结果

拓展:

可能会出现多个文件映射到同一哈希值,如何解决?改变哈希函数;每次遇到冲突映射到小文件则改变哈希函数

3、1000w有重字符串,对字符串去重

步骤:

1.【映射到不同文件】将字符串根据哈希函数映射到不同的文件中 2.【单独文件找重复】逐个文件使用哪个hash_set检查是否有重复的字符串

3.【重复之中找交集】然后对所有文件操作后的hash_set求交集

2. TOP N问题

策略:

哈希映射差分成小文件,在每个小文件中利用hash_map统计出现频率最大的数据;然后将所有文件中的最大数据放到一个大根堆中,从大根堆中取N个元素即可

如何在海量数据中找出重复最多一个

方法:

通过hash映射为小文件,通过hash_map统计各个小文件重读最多的并记录次数,对每个小文件重复最多的进行建立大根堆

1、上亿有重数据,统计最多前N个

步骤:

(1)内存存不下

  1. 通过hash映射为小文件
  2. 通过hash_map统计各个小文件重读最多的并记录次数
  3. 对每个小文件重复最多的进行建立大根堆并重复N次取走堆顶并重建堆操作

(2)内存存得下

  1. 直接内存通过hash_map统计并建大根堆
  2. 重复N次取走堆顶并重建堆操作

2、海量日志数据,提取出某日访问百度次数最多的那个IP(同1)

步骤:

  1. 将IP % 1000映射到1000个小文件中
  2. 相同IP会被映射到同一个文件
  3. 不会出现累加和更大情况
全站分卷索引 · 42 卷
  1. 1代码随想录知识星球精华(最强八股文)第五版(算法篇)
  2. 2找出所有子集的异或总和再求和
  3. 3哈希表
  4. 4哈希冲突
  5. 5红黑树与AVL树
  6. 6平衡二叉树(AVL树)
  7. 7将有序数组转换为二叉搜索树
  8. 83. 分割(组合问题)
  9. 9方法论
  10. 10509. 斐波那契数
  11. 1162. 不同路径
  12. 1296. 不同的二叉搜索树
  13. 13322. 零钱兑换
  14. 14爬楼梯
  15. 15背包小总结 (01背包、完全背包)
  16. 16子序列问题
  17. 17674. 最长连续递增序列
  18. 18115. 不同的子序列
  19. 19总结
  20. 20技巧总结
  21. 21时间序列模型
  22. 22区间DP模型
  23. 23664. 奇怪的打印机
  24. 24编辑距离
  25. 25回文串
  26. 26DP递推公式总结
  27. 27排序算法
  28. 28其他算法
  29. 294. 分别用递归和非递归方式实现二叉树先序、中序和后序遍历
  30. 302. TOP N问题
  31. 313. 分布式的TOP N问题
  32. 322. Astar数据结构 + 公式
  33. 334. 代码实现
  34. 345. 总体代码
  35. 35堆排序
  36. 36单源最短路
  37. 37思维导图
  38. 38链表
  39. 39回溯
  40. 40贪心
  41. 41动态规划
  42. 42排序