平均待ち時間

PHPz
PHPzオリジナル
2024-07-18 05:08:19565ブラウズ

Average Waiting Time

1701。平均待ち時間

シェフが一人いるレストランがあります。配列 Customers が与えられます。ここで、customers[i] = [到着i, 時刻i]:

  • 到着iは、i番目の顧客の到着時刻です。到着時刻は降順ではありません。
  • timei は、i番目 の顧客の注文を準備するのに必要な時間です。

顧客が到着すると、シェフに注文を出し、シェフは暇になると調理を開始します。顧客はシェフが注文の準備を終えるまで待ちます。シェフは一度に複数のお客様の料理を準備することはありません。シェフは、入力で指定された順序で顧客のために料理を準備します。

すべての顧客平均待ち時間を返します。実際の回答から 10-5 以内の解決策は受け入れられたとみなされます。

例 1:

  • 入力: 顧客 = [[1,2],[2,5],[4,3]]
  • 出力: 5.00000
  • 説明: 1) 最初の顧客が時間 1 に到着し、シェフが注文を受けて時間 1 にすぐに調理を開始し、時間 3 に完了するため、最初の顧客の待ち時間は 3 - 1 = 2 となります。 2) 2 番目の顧客が時間 2 に到着し、シェフが注文を受けて時間 3 に調理を開始し、時間 8 に完了するため、2 人目の顧客の待ち時間は 8 - 2 = 6 となります。 3) 3 番目の顧客が時刻 4 に到着し、シェフが注文を受けて時刻 8 に調理を開始し、時刻 11 に完了するため、3 番目の顧客の待ち時間は 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) 2 番目の顧客が時刻 5 に到着し、シェフが注文を受けて時刻 7 に調理を開始し、時刻 11 に完了するため、2 番目の顧客の待ち時間は 11 - 5 = 6 となります。 3) 3 人目の顧客が時刻 10 に到着し、シェフが注文を受けて時刻 11 に調理を開始し、時刻 14 に完了するため、3 人目の顧客の待ち時間は 14 - 10 = 4 となります。 4) 4 人目の顧客が時間 20 に到着し、シェフが注文を受けて時間 20 にすぐに調理を開始し、時間 21 に終了するため、4 人目の顧客の待ち時間は 21 - 20 = 1 となります。

したがって、平均待ち時間 = (2 + 6 + 4 + 1) / 4 = 3.25 となります。

制約:

  • 1 5
  • 1 i、時間i<= 104
  • 到着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;
    }
}

連絡先リンク

  • LinkedIn
  • GitHub

以上が平均待ち時間の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。