计划任务以在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
热门推荐
10 项目总生日祝福语简短
11 哥哥祝福语简短霸气句子
12 年底拜年祝福语大全简短
13 歌词祝福语高级文案简短
14 经典祝福语简短情侣句子
15 新年的生日祝福语简短
16 幼儿住院祝福语老师简短
17 生日祝福语简短搞笑女儿
18 新人结婚简短祝福语大全