Python程式:查詢K個觀看次數最多的節目的總時長
假設我們有一個字串列表的列表,稱為shows,還有一個整數列表,稱為durations,以及另一個值k,其中shows[i]和durations[i]分別表示第i個人觀看的節目及其觀看時長,我們需要找到k個觀看次數最多的節目的總時長。
例如,如果輸入如下:shows = ["The BGT", "Jack jumper", "The BGT", "Jokers Company", "Music magic"] durations = [10, 8, 10, 18, 9] k = 2,則輸出為38,因為觀看次數最多的兩個節目是"Jokers Company"和"The BGT",總時長為18和10 + 10 = 20。
為了解決這個問題,我們將遵循以下步驟:
如果shows為空或durations為空或k為0,則
返回0
d := 一個空字典
對於範圍從0到shows大小的i,執行以下操作:
d[shows[i]] := d[shows[i]] + durations[i]
l := 一個新的列表
對於d中的每個i,執行以下操作:
將d[i]插入到l的末尾
按降序對列表l進行排序
i := 0
answer := 0
當i < k時,執行以下操作:
answer := answer + l[i]
i := i + 1
返回answer
示例
讓我們看看下面的實現,以便更好地理解
from collections import defaultdict
def solve(shows, durations, k):
if not shows or not durations or not k:
return 0
d = defaultdict(int)
for i in range(len(shows)):
d[shows[i]] += durations[i]
l = []
for i in d:
l.append(d[i])
l.sort(reverse=True)
i = 0
answer = 0
while i < k:
answer += l[i]
i += 1
return answer
shows = ["The BGT", "Jack jumper", "The BGT", "Jokers Company",
"Music magic"]
durations = [10, 8, 10, 18, 9]
k = 2
print(solve(shows, durations, k))輸入
["The BGT", "Jack jumper", "The BGT", "Jokers Company", "Music magic"], [10, 8, 10, 18, 9], 2
輸出
38
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP