题目要求:
给你一个顾客排队队列,队列里是每个顾客完成结算所需要的时间,和n个收银台数目,求所有顾客结算完的最短排队时间
eg:
输入[2,2,4,5,6] 2
输出12
解题思路:
动态规划思想
每次肯定是最少的先结算完,所以有公式arr[min] += item ,最后数组中最大的值就是结果
function queueTime(customers, n) {
var arr = new Array(n).fill(0);
for(var item of customers){
var minValue = arr.indexOf(Math.min(...arr));
arr[minValue] += item;
}
return Math.max(...arr); //es6写法
}
queueTime([2, 2, 4, 5, 6], 2);