一、问题描述


二、解题思路
本题可以使用暴力枚举的方法来解决,解题思路如下:
(1)遍历陆地项目,固定陆地项目,枚举海洋项目,就是构成一个(i,j)对,i为陆地项目的下标,j为海洋项目的下标;
(2)对于每一个(i,j)对,有先陆地后海洋和先海洋后陆地两种情况:
<1>先陆地后海洋:time1=max(landstart+landduration,waterstart)+waterduration;
<2>先海洋再陆地:time2=max(waterstart+waterduration,landstart)+landduration;
完成全局枚举,ret为最小的time值;
三、代码实现
cpp
class Solution {
public:
int earliestFinishTime(vector<int>& landStartTime, vector<int>& landDuration, vector<int>& waterStartTime, vector<int>& waterDuration) {
//暴力:对于每一个(i,j)对,分别计算时间,取全局最小值,进行返回
int ret =INT_MAX;
for(int i=0;i!=landStartTime.size();i++)
for(int j=0;j!=waterStartTime.size();j++){
int landstart=landStartTime[i],landduration=landDuration[i];
int waterstart=waterStartTime[j],waterduration=waterDuration[j];
//先陆地再海洋
int time1=max(landstart+landduration,waterstart)+waterduration;
//先海洋再陆地
int time2=max(waterstart+waterduration,landstart)+landduration;
ret=min(ret,min(time1,time2));
}
return ret;
}
};