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

    回到顶部