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

示例

让我们看看下面的实现,以便更好地理解

Open Compiler
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

Learn Python in-depth with real-world projects through our Python certification course. Enroll and become a certified expert to boost your career.

输出

38

更新于: 2021年10月11日

99 次查看

开启你的 职业生涯

完成课程获得认证

开始学习
广告