3633. Earliest Finish Time for Land and Water Rides I
</> Solution
class Solution {
public int earliestFinishTime(int[] landStartTime, int[] landDuration,int[] waterStartTime, int[] waterDuration) {
int answer = Integer.MAX_VALUE;
// Land ride first, then Water ride
for (int i = 0; i < landStartTime.length; i++) {
int landFinish = landStartTime[i] + landDuration[i];
for (int j = 0; j < waterStartTime.length; j++) {
int waterStart = Math.max(landFinish, waterStartTime[j]);
int totalFinish = waterStart + waterDuration[j];
answer = Math.min(answer, totalFinish);
}
}
// Water ride first, then Land ride
for (int i = 0; i < waterStartTime.length; i++) {
int waterFinish = waterStartTime[i] + waterDuration[i];
for (int j = 0; j < landStartTime.length; j++) {
int landStart = Math.max(waterFinish, landStartTime[j]);
int totalFinish = landStart + landDuration[j];
answer = Math.min(answer, totalFinish);
}
}
return answer;
}
}
class Solution:
def earliestFinishTime(self, landStartTime, landDuration, waterStartTime, waterDuration):
answer = float('inf')
# Land ride first, then Water ride
for i in range(len(landStartTime)):
landFinish = landStartTime[i] + landDuration[i]
for j in range(len(waterStartTime)):
waterStart = max(landFinish, waterStartTime[j])
totalFinish = waterStart + waterDuration[j]
answer = min(answer, totalFinish)
# Water ride first, then Land ride
for i in range(len(waterStartTime)):
waterFinish = waterStartTime[i] + waterDuration[i]
for j in range(len(landStartTime)):
landStart = max(waterFinish, landStartTime[j])
totalFinish = landStart + landDuration[j]
answer = min(answer, totalFinish)
return answer
class Solution {
public:
int earliestFinishTime(vector<int>& landStartTime, vector<int>& landDuration,
vector<int>& waterStartTime, vector<int>& waterDuration) {
int answer = INT_MAX;
// Land ride first, then Water ride
for (int i = 0; i < landStartTime.size(); i++) {
int landFinish = landStartTime[i] + landDuration[i];
for (int j = 0; j < waterStartTime.size(); j++) {
int waterStart = max(landFinish, waterStartTime[j]);
int totalFinish = waterStart + waterDuration[j];
answer = min(answer, totalFinish);
}
}
// Water ride first, then Land ride
for (int i = 0; i < waterStartTime.size(); i++) {
int waterFinish = waterStartTime[i] + waterDuration[i];
for (int j = 0; j < landStartTime.size(); j++) {
int landStart = max(waterFinish, landStartTime[j]);
int totalFinish = landStart + landDuration[j];
answer = min(answer, totalFinish);
}
}
return answer;
}
};
/**
* @param {number[]} landStartTime
* @param {number[]} landDuration
* @param {number[]} waterStartTime
* @param {number[]} waterDuration
* @return {number}
*/
var earliestFinishTime = function(landStartTime, landDuration, waterStartTime, waterDuration) {
let answer = Number.MAX_SAFE_INTEGER;
// Land ride first, then Water ride
for (let i = 0; i < landStartTime.length; i++) {
const landFinish = landStartTime[i] + landDuration[i];
for (let j = 0; j < waterStartTime.length; j++) {
const waterStart = Math.max(landFinish, waterStartTime[j]);
const totalFinish = waterStart + waterDuration[j];
answer = Math.min(answer, totalFinish);
}
}
// Water ride first, then Land ride
for (let i = 0; i < waterStartTime.length; i++) {
const waterFinish = waterStartTime[i] + waterDuration[i];
for (let j = 0; j < landStartTime.length; j++) {
const landStart = Math.max(waterFinish, landStartTime[j]);
const totalFinish = landStart + landDuration[j];
answer = Math.min(answer, totalFinish);
}
}
return answer;
};