leetcode

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

earliest_time_finish_land_water2.py (1497B)


# 3635. Earliest Finish Time for Land and Water Rides II
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]
        )
    )