一个日期重叠的算法

michaellufhl 2010-02-26 08:46:33
如果有一组时间段,譬如说:

2001/1/1~2001/1/5
2006/5/6~2007/1/1
2002/1/1~2003/1/5
2002/5/6~2007/1/1
。。。。

要求算出有时间重叠的纪录,譬如说最后那2条就有时间重叠。
当然,我可以最简单的这样算:第1条和2,3,4...比,然后第2条和3,4...

除此之外,有没效率更高的算法呢?
...全文
281 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wenzheng38 2010-02-28
  • 打赏
  • 举报
回复
就是计算数据区间[Ai,Bi]重叠的问题
这是编程之美中的一道题,先按照Ai的大小从小到大的排序,然后遍历Bi
你可以查查"区间重合判断"
fsh2008 2010-02-27
  • 打赏
  • 举报
回复
我之前做过一个类似的项目,但是这个判断时间重叠的代码不是我写的,当时我只写了在一组时间段中增加一个时间段的方法。

如果我来设计这个,我会先把StartDate和EndDate分别升序排序,然后依次比较第k条的EndDate和第k+1条的StartDate。如果第k条的EndDate比第k+1条的StartDate大,那么说明这两个时间段没有重叠部分,反之,从第k+1条的StartDate到第k条的EndDate这一段是重叠的时间。

期待高手解答更好的方法...
智鹿软件 2010-02-27
  • 打赏
  • 举报
回复
可以拆分字符串!
lz可以在百度上找一些排序的方法,用排序的思想来解决!
siple 2010-02-27
  • 打赏
  • 举报
回复
学习一下,有没有更好的方法
ivfangwang_long 2010-02-27
  • 打赏
  • 举报
回复
学习了~~~~~~~~~~~~~~~~
canoe982 2010-02-27
  • 打赏
  • 举报
回复
如果时间段的条数不是很多,且相对固定,也就是说修改操作较少的话,觉得可以考虑将所有时间点编号、排序,再作比较,应该可以比较简单、快速。
梦_枫 2010-02-27
  • 打赏
  • 举报
回复
期待更好的办法。。。。。。。。

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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