1. 程式人生 > 其它 >LeetCode 5622. 平均等待時間(模擬)

LeetCode 5622. 平均等待時間(模擬)

技術標籤: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 = 22) 第二位顧客在時刻 2 到達,廚師在時刻 3 開始為他做菜,並在時刻 8 完成,第二位顧客等待時間為 8 - 2 = 63) 第三位顧客在時刻 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 = 22) 第二位顧客在時刻 5 到達,廚師在時刻 7 開始為他做菜,並在時刻 11 完成,第二位顧客等待時間為 11 - 5 = 63) 第三位顧客在時刻 10 到達,廚師在時刻 11 開始為他做菜,並在時刻 14 完成,第三位顧客等待時間為 14 - 10 = 44) 第四位顧客在時刻 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阿明),一起加油、一起學習進步!
Michael阿明