D.E. Shaw 在线测评
一家主题乐园拥有两个主要景点:陆地项目(land rides)和水上项目(water rides)。一名游客希望能够体验至少一项陆地项目和至少一项水上项目。每个项目都有特定的开放时间(opening time)和持续时间(duration)。我们的目标是找出游客能最早完成一次陆地项目和一次水上项目的时间。
以下是需注意的要点:
- 游客可以在项目开放时间或之后的任何时间开始该项目。
- 如果游客在时间
t
开始项目,那么该项目会在t + duration
这个时间点结束。 - 游客在完成一个项目后,可以立刻开始下一个项目,或者等待它开始营业。
- 游客可以自由选择先做陆地项目还是先做水上项目。
- 给定每个项目的开放时间和持续时间,要求求出最早能同时完成至少一个陆地项目和一个水上项目的时间。
示例
landStartTime = [1, 4]
landDuration = [3, 2]
waterStartTime = [5, 2]
waterDuration = [2, 2]
上面的数组下标是一一对应的关系。
完成一项陆地和一项水上项目最早的两种方式如下:
- 方式一:先从时间
t = 1
开始陆地项目1,持续到t = 1 + 3 = 4
。随后可以立即从t = 4
开始水上项目2,持续到t = 4 + 2 = 6
。 - 方式二:先从时间
t = 2
开始水上项目2,持续到t = 2 + 2 = 4
。然后从t = 4
开始陆地项目2,直到t = 4 + 2 = 6
。
最早完成这两项项目(一个陆地,一个水上)所需的时间是 6
。
函数返回值:
int: 表示游客最早可以完成一次陆地项目和一次水上项目的时间。