jieye の 数字花园

Search

Search IconIcon to open search

Last updated Unknown

阿里三面询问了设计模式与场景设计题,这些之前都看过也理解过,但是不是因为许久没被问到这些了,显得生疏了

# 设计

# Top K

从 arr[1, n]这 n 个数中,找出最大的 k 个数,这就是经典的 TopK 问题

当 K=n 时,可以很容易想到全局排序就行,这样时间复杂度时 O(nlg(n)) 但 K<n 时,全局排序的复杂度就太高了,需要优化,可以使用局部排序 面对局部排序,时间复杂度最少也要 O(nlg(k)),由于这里只需要取最大的 k 个,并不需要 k 个数有序,所以 O(n) 的随机选择是最好的方法

但是面试中不回这么简单,当上升到 1T 的充满不同语言的单词的文件在 4g 内存2T 硬盘的机器上查找出现次数频率最高的 K 个单词时,需要考虑的就多了

海量数据面试题