用 Python 编写的查找平均等待时间的程序

pythonserver side programmingprogramming更新于 2025/12/2 10:52:17

假设我们有一个数组 customers,其中 customers[i] = 包含一对 [arrival_i, time_i],这里 attendance_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 := a new list
  • time := 0
  • 对于 customers 中的每一对 (i, j),执行
    • if i >时间,则
      • 时间 := i + j
    • 否则,
      • 时间 := 时间 + 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

相关文章


有用资源