Menu
CoddyTech

Activity Selection Problem

简单贪心排序python iconjava iconcpp iconc iconjs icon+10

活动 i 从时间 start[i] 持续到时间 finish[i]。一个人一次只能进行一项活动,下一项活动必须在上一项活动结束后才开始:如果某项活动恰好在另一项活动结束的时间开始,就不能接在它后面。

返回一个人能进行的最大活动数量。

函数

maxActivities(start: integer-array, finish: integer-array) → integer
startinteger-array
每项活动的开始时间
finishinteger-array
每项活动的结束时间;finish[i] 对应 start[i]
返回值integer
一个人连续完成的活动数量最多

约束条件

  • 1 ≤ start.length == finish.length ≤ 5000
  • 0 ≤ start[i] ≤ finish[i] ≤ 105
  • 一项活动可能同时开始和结束。这些数组没有排序。

示例

输入
start = [10, 12, 20, 14, 25, 21]finish = [13, 16, 24, 19, 30, 22]
输出
4
解释
执行 10 到 13、14 到 19、21 到 22 和 25 到 30,可得到 4。无法得到 5:10 到 13 与 12 到 16 冲突,21 到 22 与 20 到 24 冲突。
challenge icon

进阶

现在有两个人并行工作,每次各自做一项活动。他们可以同时做多少项活动?每项活动应该由谁来做?

重置代码
def maxActivities(start, finish):
    # 在这里编写代码

测试 #1

测试 #2

测试 #3

参数

start = [10, 12, 20, 14, 25, 21]
finish = [13, 16, 24, 19, 30, 22]

预期输出

4