题目
在某个项目中有多个任务(用task数组表示)需要你进行处理,其中:
- task[i] = [si, ei]
你可以在 si ≤ day ≤ ei 中的任意一天处理该任务,请返回你可以处理的最大任务数。
输入描述
第一行为任务数量 n
- 1 ≤ n ≤ 100000
后面 n 行表示各个任务的开始时间和终止时间,使用 si,ei 表示
- 1 ≤ si ≤ ei ≤ 100000
输出描述
输出为一个整数,表示可以处理的最大任务数。
用例
输入
3
1 1
1 2
1 3
输出
3
解题思路
通过贪心算法结合优先队列来实现。首先将所有任务按照结束时间降序排列,然后使用优先队列来管理每个任务的开始时间。在遍历任务时,尽量将任务安排在其结束时间前的最早时刻进行处理。通过不断更新可用时间和优先队列,最终计算出可以处理的最大任务数。
代码
import