计划任务以在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
    猜你喜欢