为了账号安全,请及时绑定邮箱和手机立即绑定

求时间段之间的交集的最优解

求时间段之间的交集的最优解

慕姐4208626 2018-11-22 18:13:26
判断一段时间与一堆一段时间之间是否有交集。有与起止时间相同的判断为有交集如判断 12:30:00--14:20:00与下列时间段是否有交集10:00:00-12:00:00,  12:10:00-12:50:00 , 14:30:00-15:00:00转换为时间戳然后一一循环比较function is_cross($st1, $et1, $st2, $et2)    {        $status = $st2 - $st1;        if ($status > 0) {            $status2 = $st2 - $et1;            if ($status2 >= 0) {                return false;            } else {                return true;            }        } else {            $status2 = $et2 - $st1;            if ($status2 > 0) {                return true;            } else {                return false;            }        }    }这能解决问题,但是求更优的方法,最小的时间复杂度
查看完整描述

1 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

public function inter(){

    $tar=[6,4];

    if($tar[0]>$tar[1]){

        $temp=$tar[0];

        $tar[0]=$tar[1];

        $tar[1]=$temp;

    }

    $all=[

        [5,6],

        [7,9],

        [1,4],

        [3,1],

        [1,3],

        [8,7]

    ];

    //排序

    foreach ($all as &$v){

        if($v[0]>$v[1]){

            $temp=$v[0];

            $v[0]=$v[1];

            $v[1]=$temp;

        }

    }

    foreach ($all as $k=>$v){

        $left=$tar[0]>$v[1];

        $right=$v[0]>$tar[1];

        if(!($left||$right)){

            var_dump($v);

        }

    }


}


查看完整回答
反对 回复 2018-12-28
  • 1 回答
  • 0 关注
  • 570 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号