平均等待时间

PHPz
发布: 2024-07-18 05:08:19
原创
530 人浏览过

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中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板