3635: Earliest Finish Time for Land and Water Rides II
Problem Statement
You are given two categories of theme park attractions: land rides and water rides.
- Land rides
<ul>
<li data-end="245" data-start="168"><code data-end="186" data-start="168">landStartTime[i]</code> – the earliest time the <code>i<sup>th</sup></code> land ride can be boarded.</li>
<li data-end="306" data-start="250"><code data-end="267" data-start="250">landDuration[i]</code> – how long the <code>i<sup>th</sup></code> land ride lasts.</li>
</ul>
</li>
<li><strong data-end="325" data-start="310">Water rides</strong>
<ul>
<li><code data-end="351" data-start="332">waterStartTime[j]</code> – the earliest time the <code>j<sup>th</sup></code> water ride can be boarded.</li>
<li><code data-end="434" data-start="416">waterDuration[j]</code> – how long the <code>j<sup>th</sup></code> water ride lasts.</li>
</ul>
</li>
A tourist must experience exactly one ride from each category, in either order.
- A ride may be started at its opening time or any later moment.
- If a ride is started at time
t
, it finishes at timet + duration
. - Immediately after finishing one ride the tourist may board the other (if it is already open) or wait until it opens.
Return the earliest possible time at which the tourist can finish both rides.
Example 1:
Input: landStartTime = [2,8], landDuration = [4,1], waterStartTime = [6], waterDuration = [3]
Output: 9
Explanation:
- Plan A (land ride 0 → water ride 0):
- Start land ride 0 at time
landStartTime[0] = 2
. Finish at2 + landDuration[0] = 6
. - Water ride 0 opens at time
waterStartTime[0] = 6
. Start immediately at6
, finish at6 + waterDuration[0] = 9
.
- Start land ride 0 at time
- Plan B (water ride 0 → land ride 1):
- Start water ride 0 at time
waterStartTime[0] = 6
. Finish at6 + waterDuration[0] = 9
. - Land ride 1 opens at
landStartTime[1] = 8
. Start at time9
, finish at9 + landDuration[1] = 10
.
- Start water ride 0 at time
- Plan C (land ride 1 → water ride 0):
- Start land ride 1 at time
landStartTime[1] = 8
. Finish at8 + landDuration[1] = 9
. - Water ride 0 opened at
waterStartTime[0] = 6
. Start at time9
, finish at9 + waterDuration[0] = 12
.
- Start land ride 1 at time
- Plan D (water ride 0 → land ride 0):
- Start water ride 0 at time
waterStartTime[0] = 6
. Finish at6 + waterDuration[0] = 9
. - Land ride 0 opened at
landStartTime[0] = 2
. Start at time9
, finish at9 + landDuration[0] = 13
.
- Start water ride 0 at time
Plan A gives the earliest finish time of 9.
Example 2:
Input: landStartTime = [5], landDuration = [3], waterStartTime = [1], waterDuration = [10]
Output: 14
Explanation:
- Plan A (water ride 0 → land ride 0):
- Start water ride 0 at time
waterStartTime[0] = 1
. Finish at1 + waterDuration[0] = 11
. - Land ride 0 opened at
landStartTime[0] = 5
. Start immediately at11
and finish at11 + landDuration[0] = 14
.
- Start water ride 0 at time
- Plan B (land ride 0 → water ride 0):
- Start land ride 0 at time
landStartTime[0] = 5
. Finish at5 + landDuration[0] = 8
. - Water ride 0 opened at
waterStartTime[0] = 1
. Start immediately at8
and finish at8 + waterDuration[0] = 18
.
- Start land ride 0 at time
Plan A provides the earliest finish time of 14.
Constraints:
1 <= n, m <= 5 * 104
landStartTime.length == landDuration.length == n
waterStartTime.length == waterDuration.length == m
1 <= landStartTime[i], landDuration[i], waterStartTime[j], waterDuration[j] <= 105
Code Solution