給定一個整數數組和一個整數值K我的任務是編寫一個函數,該函數向標準輸出輸出該數組中最高的數值以及之前的K個條目。Python FInd過去k項中的最大數字
例輸入:
tps: 6, 9, 4, 7, 4, 1
k: 3
輸出示例:
6
9
9
9
7
7
有人告訴我,我編寫的代碼可以用於大型數據集的高效得多做。我怎樣才能使這個代碼最有效率?
def tweets_per_second(tps, k):
past = [tps[0]]
for t in tps[1:]:
past.append(t)
if len(past) > k: past = past[-k:]
print max(past)
我不明白你的輸入如何給出輸出。爲什麼你會得到多個'9'和'7'? – 2015-01-09 22:37:38
@Adam:對於數組的每個成員,它將打印過去K個成員(包括當前成員)的最大值。 – Ani 2015-01-09 22:41:37
您可以使用max堆,最多包含k個元素(http://en.wikipedia。組織/維基/ Heap_(data_structure))。複雜性是O(nlogk),我相信它是最優的。 – Jarlax 2015-01-09 22:45:24