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
- 如果 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
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP