LeetCode 5622. 平均等待時間(模擬)
阿新 • • 發佈:2020-12-30
技術標籤:LeetCode
文章目錄
1. 題目
有一個餐廳,只有一位廚師。你有一個顧客陣列 customers ,其中 customers[i] = [arrivali, timei]
:
arrivali
是第 i 位顧客到達的時間,到達時間按 非遞減 順序排列。timei
是給第 i 位顧客做菜需要的時間。
當一位顧客到達時,他將他的訂單給廚師,廚師一旦空閒的時候就開始做這位顧客的菜。
每位顧客會一直等待到廚師完成他的訂單。
廚師同時只能做一個人的訂單。
廚師會嚴格按照 訂單給他的順序 做菜。
請你返回所有顧客需要等待的 平均 時間。與標準答案誤差在 10-5 範圍以內,都視為正確結果。
示例 1:
輸入:customers = [[1,2],[2,5],[4,3]]
輸出:5.00000
解釋:
1) 第一位顧客在時刻 1 到達,廚師拿到他的訂單並在時刻 1 立馬開始做菜,並在時刻 3 完成,第一位顧客等待時間為 3 - 1 = 2 。
2) 第二位顧客在時刻 2 到達,廚師在時刻 3 開始為他做菜,並在時刻 8 完成,第二位顧客等待時間為 8 - 2 = 6 。
3) 第三位顧客在時刻 4 到達,廚師在時刻 8 開始為他做菜,並在時刻 11 完成,第三位顧客等待時間為 11 - 4 = 7 。
平均等待時間為 (2 + 6 + 7) / 3 = 5 。
示例 2:
輸入:customers = [[5,2],[5,4],[10,3],[20,1]]
輸出:3.25000
解釋:
1) 第一位顧客在時刻 5 到達,廚師拿到他的訂單並在時刻 5 立馬開始做菜,並在時刻 7 完成,第一位顧客等待時間為 7 - 5 = 2 。
2) 第二位顧客在時刻 5 到達,廚師在時刻 7 開始為他做菜,並在時刻 11 完成,第二位顧客等待時間為 11 - 5 = 6 。
3) 第三位顧客在時刻 10 到達,廚師在時刻 11 開始為他做菜,並在時刻 14 完成,第三位顧客等待時間為 14 - 10 = 4 。
4) 第四位顧客在時刻 20 到達,廚師拿到他的訂單並在時刻 20 立馬開始做菜,並在時刻 21 完成,第四位顧客等待時間為 21 - 20 = 1 。
平均等待時間為 (2 + 6 + 4 + 1) / 4 = 3.25 。
提示:
1 <= customers.length <= 10^5
1 <= arrivali, timei <= 10^4
arrivali <= arrivali+1
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/average-waiting-time
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
2. 解題
- 模擬
class Solution {
public:
double averageWaitingTime(vector<vector<int>>& customers) {
long long curtime = customers[0][0], arrivetime, waittimes = 0, n = customers.size();
for(int i = 0; i < n; i++)
{
arrivetime = customers[i][0];//到達時間
int needtime = customers[i][1];//做菜時間
curtime = max(curtime, arrivetime);//max,比如到達時間晚於當前時間
curtime += needtime;//做菜去了
waittimes += curtime - arrivetime;//等待時間
}
return waittimes/double(n);
}
};
我的CSDN部落格地址 https://michael.blog.csdn.net/
長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!