思路
首先对两个数组进行排序,然后模拟上车情况,维护剩余空间space和已上车人数po-1
解题过程
关键在于最后一辆车是否坐满:1如果最后一辆车坐满,则从ans=passengers[po-1]开始向下遍历,找到第一个未在passengers数组中的数即为答案;2如果最后一辆车坐满,则从ans=buses[buses.length-1]开始向下遍历,找到第一个未在passengers数组中的数即为答案
Code
class Solution {
public int latestTimeCatchTheBus(int[] buses, int[] passengers, int capacity) {
int n=buses.length;
int m=passengers.length;
Arrays.sort(buses);
Arrays.sort(passengers);
int po=0;
int space=capacity;
for(int i:buses){
for(space=capacity;space>0&&po<passengers.length&&passengers[po]<=i;space--){
po++;
}
}
int ans=0;
if(space>0){
ans=buses[n-1];
}else{
ans=passengers[po-1];
}
po--;
while(po>=0&&ans==passengers[po]){
po--;
ans--;
}
return ans;
}
}
作者:菜卷
链接:https://leetcode.cn/problems/the-latest-time-to-catch-a-bus/solutions/2923343/zuo-shang-gong-jiao-de-zui-wan-shi-jian-zsrqu/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
原文链接: https://blog.csdn.net/qq_53568730/article/details/142375283