计划任务以在Python中花费最少时间的程序
假设我们有一个称为task的值列表,其中每个不同的值代表一个不同的任务类型,并且我们还有一个非负整数k。每个任务都需要一分钟才能完成,但是我们必须在完成两个相同类型的任务之间等待k分钟。在任何时候,我们都可以做任务或等待。我们必须找到完成所有任务所需的最少时间。
因此,如果输入像nums = [2、2、2、3、3、2],k = 1,则输出将是7,因为最佳排序是[2、3、2、3、2,等待,2]。
为了解决这个问题,我们将遵循以下步骤-
c:=所有数值的计数
ans:= 0,lastsize:= 0
当c为非零时,
c [x]:= c [x] − 1
删除c [x]
如果c [x]等于0,则
lastsize:= c的大小
对于c的最常见(k + 1)个值中的每个值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中花费最少时间的程序 的全部内容, 来源链接: utcz.com/z/335112.html