用 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
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

