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.