leetcode

Leetcode Solutions (0x6A73)
git clone https://git.pngu.org/leetcode
Log | Files | Refs | Submodules | README

commit 2d13ae3c0f1eb18bf46ee7f9447698cb47208c60
parent 3f66df1e6f1e76eb7ecf866df0782125253e8335
Author: Jack Sangdahl <jack@pngu.org>
Date:   Tue,  2 Jun 2026 21:46:51 -0600

3633. earliest finish time for land and water rides 1

Diffstat:
Aearliest_time_finish_land_water1.c | 42++++++++++++++++++++++++++++++++++++++++++
Aearliest_time_finish_land_water1.py | 46++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 88 insertions(+), 0 deletions(-)

diff --git a/earliest_time_finish_land_water1.c b/earliest_time_finish_land_water1.c @@ -0,0 +1,42 @@ +// 3633. Earliest Finish Time for Land and Water Rides I +#include "leetcode.h" + +/* + * you are given two categories of theme park attractions. land rides and water + * rides. a tourist must experience exactly one ride from each category. return + * the earliest possible time at which the tourist can finish both rides. + */ + +int solve(int *start1, int n, int *duration1, int *start2, int m, + int *duration2) { + int finish1 = INT_MAX, finish2 = INT_MAX; + for (int i = 0; i < n; i++) + finish1 = fmin(finish1, start1[i] + duration1[i]); + for (int i = 0; i < m; i++) + finish2 = fmin(finish2, fmax(start2[i], finish1) + duration2[i]); + return finish2; +} + +int earliestFinishTime(int *landStartTime, int landStartTimeSize, + int *landDuration, int landDurationSize, + int *waterStartTime, int waterStartTimeSize, + int *waterDuration, int waterDurationSize) { + int land_water = solve(landStartTime, landStartTimeSize, landDuration, + waterStartTime, waterStartTimeSize, waterDuration); + int water_land = solve(waterStartTime, waterStartTimeSize, waterDuration, + landStartTime, landStartTimeSize, landDuration); + return fmin(land_water, water_land); +} + +int main() { + int lst1[] = {2, 8}, ld1[] = {4, 1}, wst1[] = {6}, wd1[] = {3}; + int lst2[] = {5}, ld2[] = {3}, wst2[] = {1}, wd2[] = {10}; + int r1 = earliestFinishTime(lst1, ARRAY_SIZE(lst1), ld1, ARRAY_SIZE(ld1), + wst1, ARRAY_SIZE(wst1), wd1, ARRAY_SIZE(wd1)); + int r2 = earliestFinishTime(lst2, ARRAY_SIZE(lst2), ld2, ARRAY_SIZE(ld2), + wst2, ARRAY_SIZE(wst2), wd2, ARRAY_SIZE(wd2)); + printf("%d\n", r1); + assert(r1 == 9); + printf("%d\n", r2); + assert(r2 == 14); +} diff --git a/earliest_time_finish_land_water1.py b/earliest_time_finish_land_water1.py @@ -0,0 +1,46 @@ +# 3633. Earliest Finish Time for Land and Water Rides I +from typing import List + +""" +you are given two categories of theme park attractions. land rides and water +rides. a tourist must experience exactly one ride from each category. return +the earliest possible time at which the tourist can finish both rides. +""" + + +class Solution: + def earliestFinishTime( + self, + landStartTime: List[int], + landDuration: List[int], + waterStartTime: List[int], + waterDuration: List[int], + ) -> int: + def solve(start1, duration1, start2, duration2): + finish1, finish2 = float("inf"), float("inf") + for i in range(len(start1)): + finish1 = min(finish1, start1[i] + duration1[i]) + for i in range(len(start2)): + finish2 = min(finish2, max(start2[i], finish1) + duration2[i]) + return finish2 + + land_water = solve(landStartTime, landDuration, waterStartTime, waterDuration) + water_land = solve(waterStartTime, waterDuration, landStartTime, landDuration) + return min(land_water, water_land) + + +if __name__ == "__main__": + obj = Solution() + print( + obj.earliestFinishTime( + landStartTime=[2, 8], + landDuration=[4, 1], + waterStartTime=[6], + waterDuration=[3], + ) + ) + print( + obj.earliestFinishTime( + landStartTime=[5], landDuration=[3], waterStartTime=[1], waterDuration=[10] + ) + )