用 Python 编写一个程序,用于安排任务以花费最少的时间
pythonserver side programmingprogramming更新于 2026/2/4 11:24:17
假设我们有一个名为"任务"的值列表,其中每个不同的值代表不同的任务类型,并且我们还有一个非负整数 k。每个任务需要一分钟才能完成,但我们必须在执行两个相同类型的任务之间等待 k 分钟。在任何时候,我们都可以执行任务或等待。我们必须找到完成所有任务所需的最短时间。
因此,如果输入为 nums = [2, 2, 2, 3, 3, 2], k = 1,则输出将为 7,因为最佳排序为 [2, 3, 2, 3, 2, WAITING, 2]。
为了解决这个问题,我们将遵循以下步骤 −
c := nums 中所有值的计数
ans := 0, lastsize := 0
当 c 非零时,执行
lastsize := c 的大小
对于 c 中最常见 (k + 1) 个值中的每个值 x,执行
c[x] := c[x] − 1
如果 c[x] 与 0 相同,则
删除 c[x]
ans := ans + k + 1
返回 ans + lastsize - (k + 1)
让我们看看下面的实现以便更好地理解 −
示例
class Solution: def solve(self, nums, k): from collections import Counter c = Counter(nums) ans = 0 lastsize = 0 while c: lastsize = len(c) for x, _ in c.most_common(k + 1): c[x] -= 1 if c[x] == 0: del c[x] ans += k + 1 return ans + lastsize - (k + 1) ob1 = Solution() nums = [2, 2, 2, 3, 3, 2] k = 1 print(ob1.solve(nums, k))
输入
[2, 2, 2, 3, 3, 2], 1
输出
7
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

