情境模擬: 平均等待時間 Average Waiting Time_Leetcode #1707

閱讀時間約 6 分鐘

題目敘述 Average Waiting Time

給定一個陣列,分別代表每位顧客的抵達時間廚師準備時間

請問平均的等待時間是多少?

等待時間定義為 客人開始真正用餐的時間 - 客人抵達的時間


測試範例

Example 1:

Input: customers = [[1,2],[2,5],[4,3]]
Output: 5.00000
Explanation:
1) The first customer arrives at time 1, the chef takes his order and starts preparing it immediately at time 1, and finishes at time 3, so the waiting time of the first customer is 3 - 1 = 2.
2) The second customer arrives at time 2, the chef takes his order and starts preparing it at time 3, and finishes at time 8, so the waiting time of the second customer is 8 - 2 = 6.
3) The third customer arrives at time 4, the chef takes his order and starts preparing it at time 8, and finishes at time 11, so the waiting time of the third customer is 11 - 4 = 7.
So the average waiting time = (2 + 6 + 7) / 3 = 5.

Example 2:

Input: customers = [[5,2],[5,4],[10,3],[20,1]]
Output: 3.25000
Explanation:
1) The first customer arrives at time 5, the chef takes his order and starts preparing it immediately at time 5, and finishes at time 7, so the waiting time of the first customer is 7 - 5 = 2.
2) The second customer arrives at time 5, the chef takes his order and starts preparing it at time 7, and finishes at time 11, so the waiting time of the second customer is 11 - 5 = 6.
3) The third customer arrives at time 10, the chef takes his order and starts preparing it at time 11, and finishes at time 14, so the waiting time of the third customer is 14 - 10 = 4.
4) The fourth customer arrives at time 20, the chef takes his order and starts preparing it immediately at time 20, and finishes at time 21, so the waiting time of the fourth customer is 21 - 20 = 1.
So the average waiting time = (2 + 6 + 4 + 1) / 4 = 3.25.

約束條件

Constraints:

  • 1 <= customers.length <= 10^5

輸入陣列長度介於1~十萬之間

  • 1 <= arrivali, timei <= 10^4

抵達時間和準備時間都介於1~一萬之間。

  • arrival<= arrivali+1

抵達時間一定是遞增序列


演算法 計算廚師的出餐時間


等待時間

=客人開始真正用餐的時間 - 客人抵達的時間

=廚師出餐的時間 - 客人抵達的時間


根據題意,
根據每個客人的抵達時間和廚師出餐時間去計算等待時間,最後再取平均即可。

要留意的是,廚師只有在出完前一位客人的餐點之後,才會給下一個客人出餐。


程式碼 計算廚師的出餐時間

class Solution:
def averageWaitingTime(self, customers: list[list[int]]) -> float:
n = len(customers)

time_waiting = 0
finished_prev = -math.inf

for customer_arrive, customer_prepare in customers:

arrive = customer_arrive

# chef starts cook this as soon as he finished last dish or customer arrived
start_cook = max(arrive, finished_prev)
end_time = start_cook + customer_prepare

# accumulate time of waiting
time_waiting += end_time - arrive

# update previous finished time
finished_prev = end_time

return time_waiting / n

複雜度分析

時間複雜度:O(n)

依序掃描每一位客人的抵達時間和廚師準備時間。

空間複雜度:O(1)

所用到的都是固定尺寸的臨時變數,所需空間為O(1)常數級別。


Reference:

[1] Average Waiting Time - LeetCode

75會員
406內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
發表第一個留言支持創作者!
本文提供了一個關於模擬法演算法的問題,介紹了操作指令的格式及其解析。透過程式碼模擬每條指令,找出回到根目錄所需的操作次數。本文詳細說明瞭模擬法的複雜度分析,能夠幫助讀者更好地理解這個問題。
題目敘述 Merge Nodes in Between Zeros 給定一個鏈結串列,合併非零區間的節點(以加總的方式合併),輸出合併後的鏈結串列。
題目敘述 Intersection of Two Arrays II 給定兩個輸入陣列,請找出兩個陣列交集的元素,並且依照出現次數輸出。 測試範例 Example 1: Input: nums1 = [1,2,2,1], nums2 = [2,2] Output: [2,2] 交集元素
題目敘述 All Ancestors of a Node in a Directed Acyclic Graph 給定一個有向無環圖,請找出每個點的祖先,以陣列的形式返回答案。
題目敘述 Most Profit Assigning Work 公司裡有n位員工,m件任務。 每位員工的能力記錄在worker陣列。 每個任務對應的能力要求和獲利紀錄在difficulty 和profit陣列。 不同的員工可以做同樣的任務。 請問怎麼分配任務可以得到整體最大獲利?
題目敘述 Patching Array 題目給定一個整數陣列, 請問還要補上多少個數字,才能用這些數字的和拼湊出所有1~n的整數。
本文提供了一個關於模擬法演算法的問題,介紹了操作指令的格式及其解析。透過程式碼模擬每條指令,找出回到根目錄所需的操作次數。本文詳細說明瞭模擬法的複雜度分析,能夠幫助讀者更好地理解這個問題。
題目敘述 Merge Nodes in Between Zeros 給定一個鏈結串列,合併非零區間的節點(以加總的方式合併),輸出合併後的鏈結串列。
題目敘述 Intersection of Two Arrays II 給定兩個輸入陣列,請找出兩個陣列交集的元素,並且依照出現次數輸出。 測試範例 Example 1: Input: nums1 = [1,2,2,1], nums2 = [2,2] Output: [2,2] 交集元素
題目敘述 All Ancestors of a Node in a Directed Acyclic Graph 給定一個有向無環圖,請找出每個點的祖先,以陣列的形式返回答案。
題目敘述 Most Profit Assigning Work 公司裡有n位員工,m件任務。 每位員工的能力記錄在worker陣列。 每個任務對應的能力要求和獲利紀錄在difficulty 和profit陣列。 不同的員工可以做同樣的任務。 請問怎麼分配任務可以得到整體最大獲利?
題目敘述 Patching Array 題目給定一個整數陣列, 請問還要補上多少個數字,才能用這些數字的和拼湊出所有1~n的整數。
你可能也想看
Thumbnail
「設計不僅僅是外觀和感覺。設計是其運作的方式。」 — Steve Jobs 身為一個獨立文案,許多人會以為我們的生活只需要面對電腦,從無到有,用精巧的文字填滿空白的螢幕,呈現心目中獨具風格的作品。 ——有的時候可以如此,但其實這是我們夢寐以求的偶發日常。 更多的時候,白天的工作時間總被各種繁雜
Thumbnail
台股、美股近期明顯回檔,市場敘事發生改變,壞消息一樁接一樁出現,下一步該怎麼走呢?本文將探討近期的宏觀經濟事件,並分享個人的操作思考。
敘述者: 那天,你像往常一樣走在街上,一邊思考著自己的創業夢。突然,你的目光被一個貼著招租廣告的店面吸引住了。 你: 哇,這個店面看起來不錯,不知道會不會太貴? 陌生人 (房東): 你好,你對這個店面感興趣嗎? 你: 嗯,是的,但我在考慮價格問題。剛開始創業,資金有限。 房東: 我可以理解。
Thumbnail
閒聊 相較於前面2篇,鴻海&日月光,是在除權息後,出現大幅度回檔,進行抄底反彈。 20230705操作隨筆-與鴻海的恩怨情仇|方格子 vocus 20230705操作隨筆-與鴻海的恩怨情仇|方格子 vocus 這次是在車上,搭著除權息行情,進行一波操作,2波價差都有吃到,一起存股鞋子的網友,
Thumbnail
AI室內設計工具,大致上可以提供四大產業面向的功能:1.對零售實體店家而言,可以展現店家形象;2.電子商務方面給予模擬產品於各種空間內展示的功能,省去實品於攝影棚拍攝的步驟及成本;3.對於房產或房東來說,更便於優化房屋或建築物等內飾及外觀的塑造;4.室內設計師、建築師、景觀師、佈置師等專家⋯⋯
對自閉症者而言,根本無法連串「上課要坐好=我要坐好」的相關性。 這情況,該怎麼辦? 安坐訓練務必進行 這在入幼稚園前,就要進行了。 剛開始,就要以角落為主,讓自閉症者使初步認知。 在自閉症者經由小活動的進行,感到好玩而有動機,就開始走出小世界。 在進行撤掉桌椅時,以漸進式為主 基本上,
Thumbnail
好消息是你又多了一條充滿紅利的虛擬溝通渠道,壞消息是沒有人能告訴你如何準確預估這裡的 ROAS 或合理化你的 ROI。It’s time to show your entrepreneurship! 在進入正題之前想 Murmur 一下當代資深行銷從業人員的苦痛與憂傷… 這個主題的文章會帶到:
小李剛從口譯訓練班畢業,他所合作的翻譯社告訴他有一個急的口譯case,小李二話不說就答應了,因為他實在想把握住每一個鍛鍊的機會。 不過翻譯社才把小李的履歷提交給客戶就被打了回票,因為小李沒有任何實戰的戰績,因此,機會就飛走了。 小李受此打擊,但不氣餒,為了累積經驗,他不久答應了一個朋友的請託,做了一
Thumbnail
前兩篇講了許多,但我人微言輕,憑藉什麼讓人買單?網路上不也很多人做過討論了,這裡所說的又有什麼不一樣?以下,我們就來用數字說話,基於不同程度的簡化與假設,逐步做說明。開始之前先說一句:無誠勿試。
Thumbnail
        酸痛之道博大精深,每天這樣治療,總感到還有不足之處。趁著居家辦公的機會,在休息時間時,一秒就可以來作伸展運動。一樣平躺後,把癢癢球放到背部,利用身體的重量來壓迫背部的肌肉,直接刺激酸痛點就是直球對決!         只要注意不要用力過猛,以免治療酸痛不成,反倒是造成
Thumbnail
回首歷史,你我都會認同,我們都不會是納粹的一員,不會成為盧安達大屠殺的加害者吧? 本文以試圖瞭解暴力、酷刑拷打或大屠殺的角度,讓讀者得知「去個人化」與「去人性化」如何嚴重影響我們對待他人的方式。
Thumbnail
「設計不僅僅是外觀和感覺。設計是其運作的方式。」 — Steve Jobs 身為一個獨立文案,許多人會以為我們的生活只需要面對電腦,從無到有,用精巧的文字填滿空白的螢幕,呈現心目中獨具風格的作品。 ——有的時候可以如此,但其實這是我們夢寐以求的偶發日常。 更多的時候,白天的工作時間總被各種繁雜
Thumbnail
台股、美股近期明顯回檔,市場敘事發生改變,壞消息一樁接一樁出現,下一步該怎麼走呢?本文將探討近期的宏觀經濟事件,並分享個人的操作思考。
敘述者: 那天,你像往常一樣走在街上,一邊思考著自己的創業夢。突然,你的目光被一個貼著招租廣告的店面吸引住了。 你: 哇,這個店面看起來不錯,不知道會不會太貴? 陌生人 (房東): 你好,你對這個店面感興趣嗎? 你: 嗯,是的,但我在考慮價格問題。剛開始創業,資金有限。 房東: 我可以理解。
Thumbnail
閒聊 相較於前面2篇,鴻海&日月光,是在除權息後,出現大幅度回檔,進行抄底反彈。 20230705操作隨筆-與鴻海的恩怨情仇|方格子 vocus 20230705操作隨筆-與鴻海的恩怨情仇|方格子 vocus 這次是在車上,搭著除權息行情,進行一波操作,2波價差都有吃到,一起存股鞋子的網友,
Thumbnail
AI室內設計工具,大致上可以提供四大產業面向的功能:1.對零售實體店家而言,可以展現店家形象;2.電子商務方面給予模擬產品於各種空間內展示的功能,省去實品於攝影棚拍攝的步驟及成本;3.對於房產或房東來說,更便於優化房屋或建築物等內飾及外觀的塑造;4.室內設計師、建築師、景觀師、佈置師等專家⋯⋯
對自閉症者而言,根本無法連串「上課要坐好=我要坐好」的相關性。 這情況,該怎麼辦? 安坐訓練務必進行 這在入幼稚園前,就要進行了。 剛開始,就要以角落為主,讓自閉症者使初步認知。 在自閉症者經由小活動的進行,感到好玩而有動機,就開始走出小世界。 在進行撤掉桌椅時,以漸進式為主 基本上,
Thumbnail
好消息是你又多了一條充滿紅利的虛擬溝通渠道,壞消息是沒有人能告訴你如何準確預估這裡的 ROAS 或合理化你的 ROI。It’s time to show your entrepreneurship! 在進入正題之前想 Murmur 一下當代資深行銷從業人員的苦痛與憂傷… 這個主題的文章會帶到:
小李剛從口譯訓練班畢業,他所合作的翻譯社告訴他有一個急的口譯case,小李二話不說就答應了,因為他實在想把握住每一個鍛鍊的機會。 不過翻譯社才把小李的履歷提交給客戶就被打了回票,因為小李沒有任何實戰的戰績,因此,機會就飛走了。 小李受此打擊,但不氣餒,為了累積經驗,他不久答應了一個朋友的請託,做了一
Thumbnail
前兩篇講了許多,但我人微言輕,憑藉什麼讓人買單?網路上不也很多人做過討論了,這裡所說的又有什麼不一樣?以下,我們就來用數字說話,基於不同程度的簡化與假設,逐步做說明。開始之前先說一句:無誠勿試。
Thumbnail
        酸痛之道博大精深,每天這樣治療,總感到還有不足之處。趁著居家辦公的機會,在休息時間時,一秒就可以來作伸展運動。一樣平躺後,把癢癢球放到背部,利用身體的重量來壓迫背部的肌肉,直接刺激酸痛點就是直球對決!         只要注意不要用力過猛,以免治療酸痛不成,反倒是造成
Thumbnail
回首歷史,你我都會認同,我們都不會是納粹的一員,不會成為盧安達大屠殺的加害者吧? 本文以試圖瞭解暴力、酷刑拷打或大屠殺的角度,讓讀者得知「去個人化」與「去人性化」如何嚴重影響我們對待他人的方式。