算法题
- 从1亿个数里面找出前100个最大的
- 分治法(快排模板,每份找第100大,最后归并,适用于内存不够的情况),时间复杂度O(nlogn = 10亿 * 100)
- 堆排,维护100个数,时间复杂度O(nlogk = 10亿 * log100)
- 局部淘汰法(不用排序),维护前100大变量。时间复杂度O(nlogn = 10亿 * 100)
- 如果重复率高的,先用hash去重
参考资料- 海量数据处理 - 10亿个数中找出最大的10000个数(top K问题)
智力题
- 赛马问题
64匹马,8个赛道,找出跑得最快的4匹马(面试题详解)(答案:11轮 = 8 + 1 + 2)
100匹马,4个赛道,找出跑最快的4匹马