用Python编写查找完成任务所需的最少时间,同类型任务之间间隔k个时间单位的程序

用Python编写查找完成任务所需的最少时间,同类型任务之间间隔k个时间单位的程序

假设我们有一个名为tasks的整数列表,其中每个项都代表不同的任务类型,我们还有一个非负整数k。每个任务需要一个时间单位来完成,并且必须按照正确的顺序完成任务,但是我们必须在执行两个同一类型的任务之间等待k个时间单位。在任何时候,我们要么可以执行一个任务,要么可以等待。我们必须找出完成所有任务所需的时间。

因此,如果输入如下:tasks = [0, 1, 1, 2] k = 2,则输出将为6,因为前两个任务是不同类型的,因此它们可以在没有任何间隔的情况下执行,现在在时间2,下一个任务是相同类型的任务,我们必须等待2个时间格,然后执行任务,最后是其他类型的任务,类型为2。因此,要执行此任务。 因此,它是[0、1、等待、等待、1、2]。从中,我们可以确定需要6个时间槽。

要解决这个问题,我们将按照以下步骤进行-

  • tick := 0
  • slot := 新的map
  • for each t in tasks, do
    • 如果t在slot中,则将tf设置为slot[t]。
    • 如果tf不为null且tf-tick> 0,则
      • tick := tick + tf-tick
    • tick := tick + 1
    • slot[t] := tick + k
  • return tick

示例

让我们看下面的实现以获得更好的理解。

def solve(tasks, k):
   tick = 0
   slot = {}
   for t in tasks:
      tf = slot.get(t)
      if tf is not None and tf - tick > 0:
         tick += tf - tick
      tick += 1
      slot[t] = tick + k

   return tick

tasks = [0, 1, 1, 2]
k = 2
print(solve(tasks, k))

输入

[0, 1, 1, 2]

输出

6

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程