用 Python 编写程序,用于查找完成任务所需的最短时间,其中同类任务之间的时间间隔为 k

pythonserver side programmingprogramming更新于 2026/1/5 14:04:17

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

因此,如果输入为任务 = [0, 1, 1, 2] k = 2,则输出将为 6,因为前两个任务是不同类型的,因此它们可以无间隙地执行,现在在时间 2,下一个任务是同类任务,我们必须等待 2 个时间段,然后执行任务,最后有其他类型的任务,类型 2。所以执行这个任务。因此它就像 [0, 1, wait, wait, 1, 2]。由此我们可以确定,我们需要 6 个时间段。

为了解决这个问题,我们将遵循以下步骤 −

  • tick := 0
  • slot := a new map
  • 对于任务中的每个 t,执行
    • tf := slot[t] 如果 t 在 slot 中
    • 如果 tf 不为空且 tf - tick > 0,则
      • tick := tick + tf - tick
    • tick := tick + 1
    • slot[t] := tick + k
  • 返回 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

相关文章


有用资源