---
# System prepended metadata

title: 2589. Minimum Time to Complete All Tasks
tags: [Leetcode, Hard, Greedy]

---

# 2589. Minimum Time to Complete All Tasks
###### tags: `Leetcode` `Hard` `Greedy`
Link: https://leetcode.com/problems/minimum-time-to-complete-all-tasks/description/
## 思路
思路参考[这里](https://leetcode.com/problems/minimum-time-to-complete-all-tasks/solutions/3286244/number-line/)
对于结束时间比较早的task 我们希望他执行的时间越晚越好 这样才能增加重复利用的可能性 所以我们应该按照结束的时间排序
先安排好结束时间比较早的task 对于后面的task 首先看它按照之前排的timeline 还需要多少时间执行task 相当于我们需要在```[start:end+1]```中加那么多True 使得这个task可以被完成 加的方法同理上面 我们希望他越晚越好
## Code
```python=
class Solution:
    def findMinimumTime(self, tasks: List[List[int]]) -> int:
        line = [False]*2001
        tasks.sort(key=lambda x:x[1])
        for start, end, duration in tasks:
            duration -= sum(line[start:end+1])
            temp = end
            while duration > 0:
                if not line[temp]:
                    duration -= 1
                    line[temp] = True
                temp -= 1
        return sum(line)
```