1. 首页
  2. 软件开发
  3. day-56 坐上公交的最晚时间

day-56 坐上公交的最晚时间

  • 发布于 2024-09-26
  • 1 次阅读


思路
首先对两个数组进行排序,然后模拟上车情况,维护剩余空间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