很多朋友面试遇到了这个问题,要最优算法,也就是说时间复杂度最低,循环和max()是行不通的:
个人解如下:
lst = []
for i in num_list():
if len(lst) < 3:
lst.append(i)
else:
if i > min(lst):
lst.remove(min(lst))
lst.append(i)
代码中用到了min(), 但是lst中 始终只有3个数,遍历一次的时间复杂度是3,所以算法的时间复杂度为3n,比n**3 快很多。