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

更新於: 2021年10月11日

99 次檢視

開啟你的 職業生涯

完成課程獲得認證

開始學習
廣告