情境模擬: 平均等待時間 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

留言
avatar-img
留言分享你的想法!
avatar-img
小松鼠的演算法樂園
96會員
427內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
2024/10/06
題目敘述 Rank Transform of an Array 給定一個陣列arr,請根據數字的大小給予序號,序號值介於1~len( set(arr) )之間。 最大的數字給予最大的序號。 次大的數字給予次大的序號。 ...依此類推 最小的數字給予最小的序號1。
Thumbnail
2024/10/06
題目敘述 Rank Transform of an Array 給定一個陣列arr,請根據數字的大小給予序號,序號值介於1~len( set(arr) )之間。 最大的數字給予最大的序號。 次大的數字給予次大的序號。 ...依此類推 最小的數字給予最小的序號1。
Thumbnail
2024/10/01
題目敘述 Check If Array Pairs Are Divisible by k 給定一個長度為偶數的整數陣列arr,和一個整數k 。 我們想把陣列元素兩兩一組組成pair,使得每個pair的總和可以被k整除。 如果做得到,返回True。 如果不行,返回False。
Thumbnail
2024/10/01
題目敘述 Check If Array Pairs Are Divisible by k 給定一個長度為偶數的整數陣列arr,和一個整數k 。 我們想把陣列元素兩兩一組組成pair,使得每個pair的總和可以被k整除。 如果做得到,返回True。 如果不行,返回False。
Thumbnail
2024/09/29
My Calendar II 給定一個行事曆的class定義和行程安排的介面。 請完成下列function 1.建構子MyCalendarTwo() 2.boolean book(int start, int end) 在行事曆加入一項新行程,起始時間為start, 結束時間為end。
Thumbnail
2024/09/29
My Calendar II 給定一個行事曆的class定義和行程安排的介面。 請完成下列function 1.建構子MyCalendarTwo() 2.boolean book(int start, int end) 在行事曆加入一項新行程,起始時間為start, 結束時間為end。
Thumbnail
看更多
你可能也想看
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
給定一個陣列,分別代表每位顧客的抵達時間和廚師準備時間。請問平均的等待時間是多少? 等待時間定義為客人開始真正用餐的時間 - 客人抵達的時間。演算法為計算廚師的出餐時間。
Thumbnail
給定一個陣列,分別代表每位顧客的抵達時間和廚師準備時間。請問平均的等待時間是多少? 等待時間定義為客人開始真正用餐的時間 - 客人抵達的時間。演算法為計算廚師的出餐時間。
Thumbnail
這篇文章分享作者在早餐店意外的取餐經驗,並提供了三位店員的處理方式,讓讀者猜測誰是老闆。文章中還分享了作者對店家經營方式的省思與學習。
Thumbnail
這篇文章分享作者在早餐店意外的取餐經驗,並提供了三位店員的處理方式,讓讀者猜測誰是老闆。文章中還分享了作者對店家經營方式的省思與學習。
Thumbnail
我要的畫面:晚餐不需要排隊點餐。 現場無人排隊,直接點餐,並且備餐時,還多了一個人協助完成餐食,整個流程順暢且快速,離開時,因為鄰車距離相近,對方還特別移車,讓我方便離開。 回家吃晚餐,食物比平時美味10倍,免不了又感謝一番,活著真好。 可操作重點:保持思想乾淨 如果腦中有懷疑,或是限制性的
Thumbnail
我要的畫面:晚餐不需要排隊點餐。 現場無人排隊,直接點餐,並且備餐時,還多了一個人協助完成餐食,整個流程順暢且快速,離開時,因為鄰車距離相近,對方還特別移車,讓我方便離開。 回家吃晚餐,食物比平時美味10倍,免不了又感謝一番,活著真好。 可操作重點:保持思想乾淨 如果腦中有懷疑,或是限制性的
Thumbnail
麻麻在yt的旅遊節目看到一間凌晨開的熱炒店,太好奇就半夜出發去嚐鮮,點完菜後會一批一批的出菜,店家手上會拿滿同一道菜,然後大喊菜名,記得要舉手,店員就會送到桌上。(不確定這樣算不算i人友善?) 等待的時間就開始拿出本子畫圖,畫到一半才想到可以錄個過程(剪片真的好困難...拍的時候心裡覺得好恥,
Thumbnail
麻麻在yt的旅遊節目看到一間凌晨開的熱炒店,太好奇就半夜出發去嚐鮮,點完菜後會一批一批的出菜,店家手上會拿滿同一道菜,然後大喊菜名,記得要舉手,店員就會送到桌上。(不確定這樣算不算i人友善?) 等待的時間就開始拿出本子畫圖,畫到一半才想到可以錄個過程(剪片真的好困難...拍的時候心裡覺得好恥,
Thumbnail
想吃點心但是沒時間吃點心QQ
Thumbnail
想吃點心但是沒時間吃點心QQ
Thumbnail
現在的中式宴席,通常是十道菜,少不了沙拉、拼盤、蟳肉、魚翅、鮑魚、蝦、扇貝、清蒸魚、米糕、燉雞、牛羊豬排……等,外加甜點、水果,經常一頓飯下來,都要二、三小時以上,而且菜餚份量又多,往往宴席過半,賓客多已飽足,接著上桌的菜,大家每每舉箸象徵性的品嚐味道,甚至由服務生將整盤菜原封不動的端走,若無賓客打
Thumbnail
現在的中式宴席,通常是十道菜,少不了沙拉、拼盤、蟳肉、魚翅、鮑魚、蝦、扇貝、清蒸魚、米糕、燉雞、牛羊豬排……等,外加甜點、水果,經常一頓飯下來,都要二、三小時以上,而且菜餚份量又多,往往宴席過半,賓客多已飽足,接著上桌的菜,大家每每舉箸象徵性的品嚐味道,甚至由服務生將整盤菜原封不動的端走,若無賓客打
Thumbnail
今天帶大家去餐廳的廚房看看,平時可是不招呼外人哦,所以要把握機會了!
Thumbnail
今天帶大家去餐廳的廚房看看,平時可是不招呼外人哦,所以要把握機會了!
Thumbnail
有一次去了一間早餐店,當時時間很接近中午,走進店裡還有看到一些客人在用餐,我跟阿姨點了餐,阿姨問我內用還是外帶,我說內用,然後就入座了。 一坐下,旁邊有另一個店員過來跟我表示店裡已經打烊,只能外帶,我當下覺得有點不是很舒服,明明一開始阿姨有詢問我要內用還是外帶? 之所以選擇走進早餐店,是因為想坐
Thumbnail
有一次去了一間早餐店,當時時間很接近中午,走進店裡還有看到一些客人在用餐,我跟阿姨點了餐,阿姨問我內用還是外帶,我說內用,然後就入座了。 一坐下,旁邊有另一個店員過來跟我表示店裡已經打烊,只能外帶,我當下覺得有點不是很舒服,明明一開始阿姨有詢問我要內用還是外帶? 之所以選擇走進早餐店,是因為想坐
Thumbnail
「肚子餓了嗎?想吃什麼?」寶看著時間問。喔!已經下午五點囉~一轉眼,我們已經黏在椅子上四個小時了。 寶是個被插畫耽誤的美食家?咖啡師?怎麼說呢...每次朋友聚會,見面第一件事情,肯定盧她來杯手沖咖啡,喝個一口聚會才開始的儀式感,擴及到我們的合作會議裡。偶爾,寶不用再被「時間魔」追趕時,我們就能
Thumbnail
「肚子餓了嗎?想吃什麼?」寶看著時間問。喔!已經下午五點囉~一轉眼,我們已經黏在椅子上四個小時了。 寶是個被插畫耽誤的美食家?咖啡師?怎麼說呢...每次朋友聚會,見面第一件事情,肯定盧她來杯手沖咖啡,喝個一口聚會才開始的儀式感,擴及到我們的合作會議裡。偶爾,寶不用再被「時間魔」追趕時,我們就能
Thumbnail
有一次與家人一起到一家早午餐店用餐.那天幾乎客滿。菜出得慢,不過還好,陸續送了來,大家開始用餐 吃到混搭風磚塊厚片拼盤時,我點的餐還沒送來,因為是一家人,所以我吃一點你的前餐,你吃一點他的主菜,大家都沒注意到這事,但我沒忘記.送烏輕紅茶豆漿來時,服務小姐很不好意思地詢問:是不是還有一份烏龍鍋燒未送
Thumbnail
有一次與家人一起到一家早午餐店用餐.那天幾乎客滿。菜出得慢,不過還好,陸續送了來,大家開始用餐 吃到混搭風磚塊厚片拼盤時,我點的餐還沒送來,因為是一家人,所以我吃一點你的前餐,你吃一點他的主菜,大家都沒注意到這事,但我沒忘記.送烏輕紅茶豆漿來時,服務小姐很不好意思地詢問:是不是還有一份烏龍鍋燒未送
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News