首頁  >  文章  >  後端開發  >  平均等待時間

平均等待時間

PHPz
PHPz原創
2024-07-18 05:08:19531瀏覽

Average Waiting Time

1701。平均等待時間

有一家只有一名廚師的餐廳。給你一個陣列customers,其中customers[i] = [arrivali, timei]:

  • 到達i是第i位顧客的到達時間。到達時間依非降序排列。
  • timei 是準備第 i 個客戶的訂單所需的時間。

顧客到來後,給廚師點菜,廚師閒下來就開始準備。顧客等待廚師準備好他的訂單。廚師一次不會為多名顧客準備食物。廚師依照顧客輸入的順序為顧客準備食物

返回所有顧客的平均等待時間。與實際答案相差 10-5 以內的解決方案被視為已接受。

範例1:

  • 輸入: 客戶 = [[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:

  • 輸入: 客戶 = [[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 5
  • 1 i,時間i4
  • 到達i i+1

解:

class Solution {

    /**
     * @param Integer[][] $customers
     * @return Float
     */
    function averageWaitingTime($customers) {
        $currentTime = 0;
        $totalWaitingTime = 0;
        $n = count($customers);

        foreach ($customers as $customer) {
            $arrival = $customer[0];
            $time = $customer[1];

            if ($currentTime < $arrival) {
                $currentTime = $arrival;
            }

            $currentTime += $time;
            $totalWaitingTime += ($currentTime - $arrival);
        }

        return $totalWaitingTime / $n;
    }
}

聯絡連結

  • 領英
  • GitHub

以上是平均等待時間的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn