求时间段之间的交集的最优解
判断一段时间与一堆一段时间之间是否有交集。有与起止时间相同的判断为有交集
如
判断
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;
}
}
}
这能解决问题,但是求更优的方法,最小的时间复杂度
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
将时间转化为时间戳,然后-------对比。
如果这个
一堆一段时间
需要被多次使用: 可以用线段树。一次使用时"一一对比"也不会更慢。python版本,js应该也是一样的
这样可以从periods挑出和period有交集的时间段。
把时间转换为整型123000, 反向判断
a -- b
c -- d
这两个时间段,在什么情况下没有交集
b < c
a > d