1701. Purata Masa Menunggu
Sederhana
Terdapat restoran dengan seorang chef. Anda diberikan pelbagai pelanggan, di mana pelanggan[i] = [ketibaani, masai]:
-
ketibaani ialah masa ketibaan pelanggan ith. Masa ketibaan diisih mengikut urutan yang tidak berkurangan.
-
masai ialah masa yang diperlukan untuk menyediakan pesanan pelanggan ith.
Apabila pelanggan tiba, dia memberikan pesanan kepada tukang masak dan tukang masak itu mula menyediakannya sebaik sahaja dia terbiar. Pelanggan menunggu sehingga tukang masak selesai menyediakan pesanannya. Chef tidak menyediakan makanan untuk lebih daripada seorang pelanggan pada satu masa. Chef menyediakan makanan untuk pelanggan mengikut susunan yang diberikan dalam input.
Kembalikan purata masa menunggu semua pelanggan. Penyelesaian dalam 10-5 daripada jawapan sebenar dianggap diterima.
Contoh 1:
-
Input: pelanggan = [[1,2],[2,5],[4,3]]
-
Output: 5.00000
-
Penjelasan:
1) Pelanggan pertama tiba pada masa 1, tukang masak mengambil pesanannya dan mula menyediakannya serta-merta pada masa 1, dan selesai pada masa 3, jadi masa menunggu pelanggan pertama ialah 3 - 1 = 2.
2) Pelanggan kedua tiba pada masa 2, chef mengambil pesanannya dan mula menyediakannya pada masa 3, dan selesai pada masa 8, jadi masa menunggu pelanggan kedua ialah 8 - 2 = 6.
3) Pelanggan ketiga tiba pada masa 4, tukang masak mengambil pesanannya dan mula menyediakannya pada masa 8, dan selesai pada masa 11, jadi masa menunggu pelanggan ketiga ialah 11 - 4 = 7.
Jadi purata masa menunggu = (2 + 6 + 7) / 3 = 5.
Contoh 2:
-
Input: pelanggan = [[5,2],[5,4],[10,3],[20,1]]
-
Output: 3.25000
-
Penjelasan:
1) Pelanggan pertama tiba pada masa 5, tukang masak mengambil pesanannya dan mula menyediakannya serta-merta pada masa 5, dan selesai pada masa 7, jadi masa menunggu pelanggan pertama ialah 7 - 5 = 2.
2) Pelanggan kedua tiba pada masa 5, chef mengambil pesanannya dan mula menyediakannya pada masa 7, dan selesai pada masa 11, jadi masa menunggu pelanggan kedua ialah 11 - 5 = 6.
3) Pelanggan ketiga tiba pada masa 10, tukang masak mengambil pesanannya dan mula menyediakannya pada masa 11, dan selesai pada masa 14, jadi masa menunggu pelanggan ketiga ialah 14 - 10 = 4.
4) Pelanggan keempat tiba pada masa 20, tukang masak mengambil pesanannya dan mula menyediakannya serta-merta pada masa 20, dan tamat pada masa 21, jadi masa menunggu pelanggan keempat ialah 21 - 20 = 1.
Jadi purata masa menunggu = (2 + 6 + 4 + 1) / 4 = 3.25.
Kekangan:
- 1 <= pelanggan.panjang <= 105
- 1 <= ketibaani, masai<= 104
- ketibaani <= ketibaani+1
Penyelesaian:
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;
}
}
Salin selepas log masuk
Pautan Kenalan
Atas ialah kandungan terperinci Purata Masa Menunggu. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!