首页 > 其他 > 详细

区间是否重合

时间:2021-06-01 23:54:42      阅读:26      评论:0      收藏:0      [点我收藏+]

刷题时候遇到了一个 两区间重合判定问题,写出了bug ,是因为思路不清楚,想明白以后总结一下。

给出[ a,b] ,  [c, d ] 两个闭区间 判断是否存在重合的部分 

两区间的分布一共有六种情况, 其中四种有重合,四种分离,因此可以正向反向两种思路 。

1.正向判断

      四种情况分别是 区间ab包含区间cd , 区间cd 包含区间ab ,区间ab 右部分与 区间cd重合, 区间ab左部分与区间 cd重合。

四种情况满足一个即可。

boole IsOverlap(int a,int b,int c, int d){
     return (a<=c&&b>=d)  || (a>=c)&&(b<=d)
             ||( a>=c && a<=d) || (b>= c && b<=d) ; 

 

 2.反向判断

   两种不重叠情况是 ab全部在cd左边, ab全部在cd右边。  两种情况都不满足 则重叠。

bool IsOverlap (int a, int b, int c, int d){
    return  ! ( b <c || a> d) ;

  比较起来, 第二种思路明显简洁 。 

    

区间是否重合

原文:https://www.cnblogs.com/fdbwymz/p/14838876.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!