哈哈看呵呵

哈哈看呵呵

这家伙有点懒,还没写个性签名!

  • 财富值3695
  • 威望值20
  • 总积分4095

个人信息

  • 2019-10-22 已签到
    连续签到1天,获得了5个金钱
  • 2019-10-18 已签到
    连续签到1天,获得了5个金钱
  • 2019-10-13 已签到
    连续签到1天,获得了5个金钱
  • 2019-10-09 已签到
    连续签到1天,获得了5个金钱
  • 2019-09-30 已签到
    连续签到2天,获得了10个金钱
  • 附加题:
    可以参考 数线段问题
    即一条直线上有N个点,问有几条线段,先判断那些是线段,再判断线段长度。

    从下向上

    1. 遍历数组,起始不数, 大于0开始数,数组项等于0结果加1 (最下边一层)
    2. 遍历结束,数组每个值都减去1 (上移一层)
    3. 重复1,2,直到数组总和小于等于1,返回结果
    function foo($arr){
        $result = 0;
        while (array_sum($arr)>1) {
            $countFlag = 0;
            $temp = 0;
            foreach ($arr as $key => $value) {
                if($value==0){
                    $temp+=1;
                }
                if($value>=1){
                    $countFlag+=1;
                    $arr[$key]-=1;
                    if($countFlag==2){
                        $result+=$temp;
                        $countFlag=1;
                        $temp=0;
                    }else{
                        $temp=0;
                    }
                }
            }
        }
        
    
        return $result;
    }
    

    写的过程中,发现思路有点问题,引入临时变量$temp,$countFlag也多加了一个状态,然后解决了问题。
    应该有更简单的办法,这个算法,复杂度比较高。
    重新整理了一下思路:

    1. 先去掉首尾的0
    2. 按1分割数组,计算各个数组0元素的个数
    3. 数组大于等于1的值都减去1,重复1,2
  • 参考 思路,简单写了一下

    function getAvgWaitTime($aTimes,$pTimes,$num=4)
    {
        $waitTime = 0; // 总等待时间
        $len = count($aTimes); // 总人数
        $now = []; // 当前窗口排队人的离开时刻
        for ($i=0; $i < $num; $i++) { 
            $now[] = $aTimes[$i]+$pTimes[$i];
        }
    
        // 第五人开始
        for ($i=4; $i < $len; $i++) { 
            $minTime = min($now);
            $waitTime += $minTime-$aTimes[$i];
    
            //最少的离开窗口,下一个补上
            $key = array_search($minTime, $now);
            $now[$key] = $waitTime+$pTimes[$i];
        }
    
        return $waitTime/$len;
    }
    
  • 2019-09-29 已签到
    连续签到1天,获得了5个金钱
  • 2019-06-18 已签到
    连续签到1天,获得了5个金钱
  • 2019-06-10 已签到
    连续签到1天,获得了5个金钱
总监 等级规则
4095/5000
资料完整度
10/100
用户活跃度
0/100

Ta的关注

4

Ta的粉丝

7

Ta的访客

16