1. 程式人生 > >Python返回列表中的top5,時間複雜度O(1)

Python返回列表中的top5,時間複雜度O(1)

Python返回列表中的top5,時間複雜度O(1)

有同學可能想了,我用sort排序一下,再返回不就好了。
那有沒有別的解決辦法呢?

# 題目:長度10W的列表,返回top5的數。
# 要求:時間複雜度O(1)
#
# 解題思路:
# 用列表模擬棧,遍歷列表;
# 定義一個長度為5的棧,取出前5個數字壓棧
# 從第6個元素開始,用下一個數字和棧內最小的元素比較,如果大於,刪除最小的元素,執行壓棧;
# 返回列表,即為top5

def func1(list_raw):
    max_stack = list_raw[:5]
    for i in list_raw[5:
]: if i > min(max_stack): max_stack.remove(min(max_stack)) max_stack.append(i) return max_stack import numpy as np list1 = list(np.random.randint(1000, size=1000)) print(func1(list1))