便利蜂 2021年春季招聘笔试题
说说我的思路:
单个顾客结账时间就是顾客等待结账时间和结账所需时间相加
从第一位顾客开始,他不需等待,结账时间就是结账所需时间,
接着记录他的结账时刻,
第二位顾客的等待结账时间就是第一位的结账时刻减去第二位的排队时刻
所以总结账时间为:1号结账时间+2号结账所需时间+2号等待结账时间
以此往后,
就可以计算所有顾客总结账时间
public class demo1 {
public static void main(String[] args) {
int ans2 = 0;
int b = 0;
int[][]customers = {{1,2},{2,5},{4,3},{4,2}};
for (int i = 0; i <customers.length ; i++) {
ans2 += customers[i][1];//如果只有一个顾客,ans2表示此顾客所需结账时间,如果多于一个顾客,ans2表示上一位顾客所需结账时间和当前顾客支付时间之和(还未加上当前顾客等待支付时间)
if(i == 1){//若当前元素是第二位顾客
int ans1 = (customers[i-1][0]+customers[i-1][1])-customers[i][0];//将第一位顾客结账时刻减第二位顾客开始排队时刻,就是第二位顾客等待支付时间
b = customers[i-1][0]+customers[i-1][1]+customers[i][1];//记录第二位顾客支付完成的时刻
ans2 = ans2+ans1;//表示前两位顾客总结账时间
}
if(i>1){//如果是第三位及后面的顾客
int ans3 = b-customers[i][0];//上一位顾客结账时刻减当前顾客开始排队时刻,为当前顾客等待支付时间
b += customers[i][1];//当前顾客支付完成的时刻
ans2 = ans2+ans3;//表示总结张时间
}
}
System.out.println(ans2);
}
}
如有错误,还请指正