计划任务以在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