Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 识别最后一位进入巴士的乘客!-满足时间复杂性_Java_Algorithm_Performance_Data Structures_Time Complexity - Fatal编程技术网

Java 识别最后一位进入巴士的乘客!-满足时间复杂性

Java 识别最后一位进入巴士的乘客!-满足时间复杂性,java,algorithm,performance,data-structures,time-complexity,Java,Algorithm,Performance,Data Structures,Time Complexity,这是我在采访中提出的一个问题。有许多乘客在排队等候。最初,假定总线为空,具有固定容量“a”。我试图根据公交车时间,根据耐心程度找到最后一个上车的人。该人员将等待公共汽车,直到其耐心水平到期。最后,如果所有乘客都已登机,则返回0,因为将没有人离开 测试用例1: 输入: 母线容量a=2 耐心限制列表b=[1,2,3,4] 公交车到达时间列表c=[1,3,4] 输出: [2,4,0] 在这种情况下,当公交车到达时间(c[0])为1时,所有乘客都将可用(因为所有乘客的耐心水平高于公交车时间,即1)。但由

这是我在采访中提出的一个问题。有许多乘客在排队等候。最初,假定总线为空,具有固定容量“a”。我试图根据公交车时间,根据耐心程度找到最后一个上车的人。该人员将等待公共汽车,直到其耐心水平到期。最后,如果所有乘客都已登机,则返回0,因为将没有人离开

测试用例1:

输入:

  • 母线容量a=2

  • 耐心限制列表b=[1,2,3,4]

  • 公交车到达时间列表c=[1,3,4]

  • 输出: [2,4,0]

    在这种情况下,当公交车到达时间(c[0])为1时,所有乘客都将可用(因为所有乘客的耐心水平高于公交车时间,即1)。但由于公交车的载客量限制在2人以内,因此只允许2名乘客进入。因此,只有2名到达队列第2位的乘客才能进入。因此,第一次查询公交车到站的答案是2

    当公交车到达时间(c[1])为3时,1号和2号乘客将不可用,因为他们的耐心水平被超过,因此3号和4号位置的乘客将根据载客量进入。因此,第二个公交车到站查询的答案是4

    当公交车到达时间(c[2])为4时,乘客1、2和3将已经离开队列,因此乘客4将准备进入,但由于未满足通行能力,返回0。最后的解是[2,4,0]

    我已经用Java编写了下面的代码

     public static List<Integer> getLastPassenger(int a, List<Integer> b, List<Integer> c) {
    
        List<Integer> result = new ArrayList<>();
    
    
        for (int i = 0; i < c.size(); i++) {  //1,3,4
    
            int count = 0;
            int j;
            for (j = 0; j < b.size(); j++) { //1,2,3,4
    
                if (b.get(j) >= c.get(i)) {
    
                    count++;
                    if (count == a) {
                        break;
                    }
    
                }
    
            }
            if (count < a) {
                result.add(0);
            } else {
                result.add(j + 1);
            }
    
        }
    
        return result;
    }
    
    公共静态列表getLastPassenger(内部a、列表b、列表c){
    列表结果=新建ArrayList();
    对于(inti=0;i=c.get(i)){
    计数++;
    如果(计数=a){
    打破
    }
    }
    }
    如果(计数
    但是代码不能满足时间复杂度的要求,非常感谢您的帮助

    还有一些测试用例:

    测试用例2:

    输入:

  • 母线容量a=2

  • 耐心限制列表b=[2,2,2,3]

  • 公交车到达时间列表c=[1,3,4]

  • 输出: [2,0,0]

    测试用例3:

    输入:

  • 母线容量a=2

  • 耐心限制列表b=[5,5,2,3,1]

  • 公交车到达时间列表c=[1,3,4]

  • 输出: [2,2,2]

    测试用例4:

    输入: 1.母线容量a=3

  • 耐心限制列表b=[1,1,1,4,4,3,2]

  • 公交车到达时间列表c=[1,2,3,4]

  • 输出:
    [3,6,6,0]

    < P>试着看PrimeRealStay. < /P> < P>对于以后的查询,我能够用C++优化问题。我无法按时解决问题,但我认为这种方法将通过时间限制

    
    班车亭{
    多地图站;
    公众:
    无效添加(常量整数、常量大小\u t顺序){
    站立。插入(标准:配对(耐心,顺序+1));
    }
    大小(整数,整数k){
    向量序;
    自动it=站立。查找(耐心);
    if(it==stand.end()){
    它=站立上限(耐心);
    }
    for(;it!=stand.end();++it){
    命令。推回(它->秒);
    }
    如果(k>orders.size())
    返回0;
    排序(orders.begin(),orders.end());
    退货订单[k-1];
    }
    };
    向量getLastPassenger(整数k,向量p,向量q){
    矢量结果;
    公共汽车站;
    尺寸i=0;
    适用于(建筑内部和c:p){
    添加(c,i++);
    }
    适用于(const int&c:q){
    const auto r=stand.getOrder(c,k);
    结果:推回(r);
    }
    返回结果;
    }
    
    请链接到比赛。如果比赛是现场的,外部帮助是否合适?当公共汽车到达时,是否总是假定它是空的?如果没有,你如何确定人们何时离开巴士?@trincot最初,巴士被认为是空的。我理解,是的,但如果1号和2号乘客乘坐的是容量为2的巴士,你怎么能让3号或4号乘客上车?人们下车的规则是什么?@trincot这个问题只是指上车。根据耐心程度,乘客正在进入。