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
  • 对于 customers 中的每个对 (i, j),执行以下操作:
    • 如果 i > time,则
      • time := i + j
    • 否则,
      • time := time + j
  • 在 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

更新于: 2021年10月6日

635 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.