在Python中查找平均等待时间的程序
假设我们有一个数组customers,其中customers[i]=一个持有一对[arrival_i,time_i]的数组,这里arrival_i是第i个客户的到达时间。到达时间是从小到大排序的。time_i是准备第i个客户订单所需的时间。现在,当客户到达时,他/她给出订单,只有在厨师空闲时,才开始准备该订单。厨师一次不会为多个客户准备食物。并且他按照放置订单的顺序进行准备。我们必须找到所有客户的平均等待时间。
因此,如果输入如下所示:customers = [[7,2],[8,4],[10,3],[20,1]],那么输出将为3.5,因为,
- 第一位客户在7点到达,厨师接受订单并立即在7点开始准备,然后在9点完成,因此第一位客户的等待时间为9-7=2。
-
第二位客户在8点到达,厨师接受他的订单并在9点开始准备,然后在13点完成,因此第二位客户的等待时间为13-8=5。
-
第三位客户在10点到达,厨师接受他的订单并在13点开始准备,然后在16点完成,因此第三位客户的等待时间为16-10=6。
-
第四位客户在20点到达,厨师接受他的订单并立即在20点开始准备,然后在21点完成,因此第四位客户的等待时间为21-20=1。
-
因此平均等待时间=(2+5+6+1)/4=3.5。
要解决这个问题,我们将按照以下步骤进行操作 –
- arr:一个新列表
- time:0
- 对于客户中的每个配对(i,j),执行以下操作
- if i > time,则
- time = i + j
- 否则,
- time += j
- if i > time,则
- 将(arr的末尾插入time-i)
- 返回(arr中所有项目的平均值)
示例
让我们看一下以下实现,以更好的理解 –
def solve(customers):
arr = []
time = 0
for i , j in customers:
if(i > time):
time = i + j
else:
time += j
arr.append(time - i)
return sum(arr) / len(arr)
customers = [[7,2],[8,4],[10,3],[20,1]]
print(solve(customers))
输入
[[7,2],[8,4],[10,3],[20,1]]
输出
3