求判断两个时间段有没有重叠的算法

Powertion 2011-01-11 11:33:21

假设时间段一为t1~t2,时间段二为t3~t4

有简便快捷的方法更好,比如SQL语句

我这个写法有问题,请指正
(t3<=t1 and t4>=t1) or
(t3<=t2 and t4>=t2) or
(t3>=t1 and t4<=t2) or
(t3<=t1 and t4>=t2)
...全文
2347 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
lz3771 2011-01-20
  • 打赏
  • 举报
回复
楼上的都很犀利
zzz9413 2011-01-17
  • 打赏
  • 举报
回复 2
不重叠比较容易写出来:只有2个可能
1,t3大于t2
2,t4小于t1

写出来就是(t3>t2)or(t4<t1)

要是重叠来考虑,就够你头大的了。所以判断不重叠后反过来就好。
//这样就是判断如果重叠就执行的语句了
if(!不重叠)
{
}
sxq310 2011-01-14
  • 打赏
  • 举报
回复
如果你的时间t1~t2,t3~t4,本身存在t1<=t2 && t3<=t4 那么我觉得最大值小于最小值或者最小值大于最大值就可以判断时间没重复了。
判断应该是(t2<t3 || t4<t1 )不为真就没重复了;
martenyong 2011-01-14
  • 打赏
  • 举报
回复
只要不重合,
那么
(t3-t2)*(t4-t1)>=0
mp3com22 2011-01-13
  • 打赏
  • 举报
回复
反向思考
strike2368168 2011-01-13
  • 打赏
  • 举报
回复
!(t4<t1 || t3>t2)
就这个答案
static163 2011-01-12
  • 打赏
  • 举报
回复
t1~t2; t3~t4;

让p1指向这两段时间开始时间比较小的那个,p2指向另一段,即保证p1->t_start <= p2->t_start,这样只要比较p1->t_end和p2->t_start就行了.
if(p1->t_end > p2->t_start)
重叠;
else
不重叠;
yyfhz 2011-01-11
  • 打赏
  • 举报
回复
错了,应该是
(t1>=t3 and t1<=t4) or (t3>=t1 and t3<=t2)
yyfhz 2011-01-11
  • 打赏
  • 举报
回复
(t1>=t3 and t1<=t4) or (t3>=t1 and t3<=t4)
pmars 2011-01-11
  • 打赏
  • 举报
回复
就两个时间段!
牛海朋 2011-01-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 dengsf 的回复:]
假设已有 t1<=t2, t3<=t4
不重叠: t2<=t3 || t4<=t1
重叠取反即可:t3<t2 && t4>t1
[/Quote]

该是这样
dengsf 2011-01-11
  • 打赏
  • 举报
回复
假设已有 t1<=t2, t3<=t4
不重叠: t2<=t3 || t4<=t1
重叠取反即可:t3<t2 && t4>t1
yui 2011-01-11
  • 打赏
  • 举报
回复
一般来说,t1<=t2,t3<=t4,判断重叠只要判断t2>t3就可以了
yuhang184602006 2011-01-11
  • 打赏
  • 举报
回复
只能路过了。。。。

33,027

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧