Java 识别最后一位进入巴士的乘客!-满足时间复杂性
这是我在采访中提出的一个问题。有许多乘客在排队等候。最初,假定总线为空,具有固定容量“a”。我试图根据公交车时间,根据耐心程度找到最后一个上车的人。该人员将等待公共汽车,直到其耐心水平到期。最后,如果所有乘客都已登机,则返回0,因为将没有人离开 测试用例1: 输入: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)。但由
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:
输入:
[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这个问题只是指上车。根据耐心程度,乘客正在进入。