在 Python 中查找完成具有 k 时间间隔的任务所需的最短时间的程序
假设我们有一个称为任务的整数列表,其中每个项目代表不同的任务类型,我们还有一个非负整数,比如k。每个任务需要一个单位的时间来完成,任务必须以正确的顺序完成,但我们必须在完成两个相同类型的任务之间有k个单位的时间。在任何时候,我们都可以执行任务或等待。我们必须找出完成所有任务所需的时间。
所以,如果输入像tasks=[0,1,1,2]k=2,那么输出将是6,因为前两个任务是不同的类型,所以它们可以毫无间隙地执行,现在是2,下一个任务是同类型任务,我们要等2个时间槽,然后再做任务,最后有其他类型的任务,类型2。所以做这个任务。所以它就像[0,1,wait,wait,1,2]。由此我们可以确定,我们需要6个时隙。
示例
让我们看看以下实现以获得更好的理解-
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