Temps d'attente moyen

PHPz
PHPzoriginal
2024-07-18 05:08:19534parcourir

Average Waiting Time

1701. Temps d'attente moyen

Moyen

Il y a un restaurant avec un seul chef. Vous recevez un tableau clients, où clients[i] = [arrivéei, heurei] :

  • Arrivali est l'heure d'arrivée du ième client. Les heures d'arrivée sont triées par ordre non décroissant.
  • timei est le temps nécessaire à la préparation de la commande du ième client.

Quand un client arrive, il remet sa commande au chef, et le chef commence à la préparer une fois qu'il est inactif. Le client attend que le chef ait fini de préparer sa commande. Le chef ne prépare pas de plats pour plus d'un client à la fois. Le chef prépare les plats des clients dans l'ordre qui leur a été indiqué lors de l'entrée.

Renvoyer le moyen temps d'attente de tous les clients. Les solutions dans les 10-5 de la réponse réelle sont considérées comme acceptées.

Exemple 1 :

  • Entrée : clients = [[1,2],[2,5],[4,3]]
  • Sortie : 5,00000
  • Explication : 1) Le premier client arrive à l'heure 1, le chef prend sa commande et commence immédiatement à la préparer à l'heure 1, et termine à l'heure 3, donc le temps d'attente du premier client est de 3 - 1 = 2. 2) Le deuxième client arrive à l'heure 2, le chef prend sa commande et commence à la préparer à l'heure 3, et termine à l'heure 8, donc le temps d'attente du deuxième client est de 8 - 2 = 6. 3) Le troisième client arrive à l'heure 4, le chef prend sa commande et commence à la préparer à l'heure 8, et termine à l'heure 11, donc le temps d'attente du troisième client est de 11 - 4 = 7.

Donc le temps d'attente moyen = (2 + 6 + 7) / 3 = 5.

Exemple 2 :

  • Entrée : clients = [[5,2],[5,4],[10,3],[20,1]]
  • Sortie : 3,25000
  • Explication : 1) Le premier client arrive à l'heure 5, le chef prend sa commande et commence immédiatement à la préparer à l'heure 5, et termine à l'heure 7, donc le temps d'attente du premier client est de 7 - 5 = 2. 2) Le deuxième client arrive à l'heure 5, le chef prend sa commande et commence à la préparer à l'heure 7, et termine à l'heure 11, donc le temps d'attente du deuxième client est de 11 - 5 = 6. 3) Le troisième client arrive à l'heure 10, le chef prend sa commande et commence à la préparer à l'heure 11, et termine à l'heure 14, donc le temps d'attente du troisième client est de 14 - 10 = 4. 4) Le quatrième client arrive à l'heure 20, le chef prend sa commande et commence immédiatement à la préparer à l'heure 20, et termine à l'heure 21, donc le temps d'attente du quatrième client est de 21 - 20 = 1.

Donc le temps d'attente moyen = (2 + 6 + 4 + 1) / 4 = 3,25.

Contraintes :

  • 1 <= clients.length <= 105
  • 1 <= arrivéei, heurei<= 104
  • arrivéei <= arrivéei+1

Solution :

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;
    }
}

Liens de contact

  • LinkedIn
  • GitHub

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn