news 2026/6/2 10:26:50

leetcode 3633. 最早完成陆地和水上游乐设施的时间 I 简单

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
leetcode 3633. 最早完成陆地和水上游乐设施的时间 I 简单

给你两种类别的游乐园项目:陆地游乐设施水上游乐设施

  • 陆地游乐设施
    • landStartTime[i]– 第i个陆地游乐设施最早可以开始的时间。
    • landDuration[i]– 第i个陆地游乐设施持续的时间。
  • 水上游乐设施
    • waterStartTime[j]– 第j个水上游乐设施最早可以开始的时间。
    • waterDuration[j]– 第j个水上游乐设施持续的时间。

一位游客必须从每个类别中体验恰好一个游乐设施,顺序不限

  • 游乐设施可以在其开放时间开始,或之后任意时间开始。
  • 如果一个游乐设施在时间t开始,它将在时间t + duration结束。
  • 完成一个游乐设施后,游客可以立即乘坐另一个(如果它已经开放),或者等待它开放。

返回游客完成这两个游乐设施的最早可能时间

示例 1:

输入:landStartTime = [2,8], landDuration = [4,1], waterStartTime = [6], waterDuration = [3]

输出:9

解释:

  • 方案 A(陆地游乐设施 0 → 水上游乐设施 0):
    • 在时间landStartTime[0] = 2开始陆地游乐设施 0。在2 + landDuration[0] = 6结束。
    • 水上游乐设施 0 在时间waterStartTime[0] = 6开放。立即在时间6开始,在6 + waterDuration[0] = 9结束。
  • 方案 B(水上游乐设施 0 → 陆地游乐设施 1):
    • 在时间waterStartTime[0] = 6开始水上游乐设施 0。在6 + waterDuration[0] = 9结束。
    • 陆地游乐设施 1 在landStartTime[1] = 8开放。在时间9开始,在9 + landDuration[1] = 10结束。
  • 方案 C(陆地游乐设施 1 → 水上游乐设施 0):
    • 在时间landStartTime[1] = 8开始陆地游乐设施 1。在8 + landDuration[1] = 9结束。
    • 水上游乐设施 0 在waterStartTime[0] = 6开放。在时间9开始,在9 + waterDuration[0] = 12结束。
  • 方案 D(水上游乐设施 0 → 陆地游乐设施 0):
    • 在时间waterStartTime[0] = 6开始水上游乐设施 0。在6 + waterDuration[0] = 9结束。
    • 陆地游乐设施 0 在landStartTime[0] = 2开放。在时间9开始,在9 + landDuration[0] = 13结束。

方案 A 提供了最早的结束时间 9。

示例 2:

输入:landStartTime = [5], landDuration = [3], waterStartTime = [1], waterDuration = [10]

输出:14

解释:

  • 方案 A(水上游乐设施 0 → 陆地游乐设施 0):
    • 在时间waterStartTime[0] = 1开始水上游乐设施 0。在1 + waterDuration[0] = 11结束。
    • 陆地游乐设施 0 在landStartTime[0] = 5开放。立即在时间11开始,在11 + landDuration[0] = 14结束。
  • 方案 B(陆地游乐设施 0 → 水上游乐设施 0):
    • 在时间landStartTime[0] = 5开始陆地游乐设施 0。在5 + landDuration[0] = 8结束。
    • 水上游乐设施 0 在waterStartTime[0] = 1开放。立即在时间8开始,在8 + waterDuration[0] = 18结束。

方案 A 提供了最早的结束时间 14。

提示:

  • 1 <= n, m <= 100
  • landStartTime.length == landDuration.length == n
  • waterStartTime.length == waterDuration.length == m
  • 1 <= landStartTime[i], landDuration[i], waterStartTime[j], waterDuration[j] <= 1000

分析:暴力枚举所有水上项目和陆地项目的组合。可以先玩陆地项目再玩水上项目,也可以反过来,分别计算这两种顺序下的最优结果,然后取其中的最小值。以“先陆地、后水上”为例,计算逻辑如下:

对于陆地项目,分别计算它的开始时间 + 持续时间。准备玩第二个项目时,会遇到两种情况:

若水上项目已经开放,则可以立即开始,完成时刻就是第一个项目的结束时间 + 水上项目的持续时间。若水上项目还没开放,则必须等到它开始才能玩,完成时刻就是水上项目的开始时间 + 水上项目的持续时间。再交换顺序,按照同样的方法计算先水上、后陆地的最早完成时间。

class Solution { public: int earliestFinishTime(vector<int>& landStartTime, vector<int>& landDuration, vector<int>& waterStartTime, vector<int>& waterDuration) { int n=landStartTime.size(),m=waterStartTime.size(),ans=100000; for(int i=0;i<n;++i) { int temp=landStartTime[i]+landDuration[i]; for(int j=0;j<m;++j) { if(waterStartTime[j]<=temp)ans=min(ans,temp+waterDuration[j]); else ans=min(waterStartTime[j]+waterDuration[j],ans); } } for(int i=0;i<m;++i) { int temp=waterStartTime[i]+waterDuration[i]; for(int j=0;j<n;++j) { if(landStartTime[j]<=temp)ans=min(ans,temp+landDuration[j]); else ans=min(landStartTime[j]+landDuration[j],ans); } } return ans; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/2 10:26:49

空间网络协议三层架构:HSML、KOSM与区块链如何重塑人机物交互

1. 从智能技术到空间网络&#xff1a;一个全新的计算栈我们之前聊了那么多关于智能眼镜、传感器和物联网设备如何感知世界&#xff0c;你可能会有个疑问&#xff1a;这些五花八门的“聪明”设备&#xff0c;它们产生的海量数据、复杂的交互指令&#xff0c;到底怎么才能在一个统…

作者头像 李华
网站建设 2026/6/2 10:25:29

A2-Trickle算法:解决低功耗网络数据分发难题的优化方案

1. 项目概述与核心挑战在物联网和无线传感器网络的实际部署中&#xff0c;我们经常面临一个看似简单却异常棘手的问题&#xff1a;如何将一个指令、一个配置更新或者一段新的固件代码&#xff0c;快速、可靠且节能地分发到网络中的每一个节点&#xff1f;尤其是在那些由电池供电…

作者头像 李华
网站建设 2026/6/2 10:25:11

推荐系统进阶:从特征工程到多目标排序的工程化实践

1. 项目概述&#xff1a;从“看什么”到“为什么看这个” 上次我们聊了Metflix推荐系统的骨架&#xff0c;也就是协同过滤和内容过滤那些基础玩法。很多朋友反馈说&#xff0c;原理懂了&#xff0c;但真要把这套东西跑起来&#xff0c;让用户觉得“这推荐真懂我”&#xff0c;中…

作者头像 李华
网站建设 2026/6/2 10:24:19

SEIF Awards:软件工程研究的种子基金与创新孵化机制解析

1. 项目概述&#xff1a;一次软件工程研究的“催化剂”如果你在软件工程领域做过研究&#xff0c;尤其是早期职业生涯的研究者&#xff0c;大概都体会过那种“万事开头难”的窘境。一个好的想法&#xff0c;往往卡在数据收集、实验环境搭建、或者仅仅是缺乏同行交流验证的环节上…

作者头像 李华