博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
快速判断&求出区间相交的长度
阅读量:6564 次
发布时间:2019-06-24

本文共 923 字,大约阅读时间需要 3 分钟。

有两个区间A[a1,b1], B[a2,b2],判断这两个区间有没有交集。我们可以分为两种思维来判断:

 

/**  *思路就是如果两个区间不相交,那么最大的开始端一定大于最小的结束端  **/if(max(a1, a2) < min(b1, b2)){    return "有交集"}else{    return "无交集"}

 

给你两个区间[a, b]和[c, d],如果让你求出这两个区间的相交长度,你会怎么做呢?
不出意外的话,大多数同学就会进行分类讨论,看看那个区间在前,那个区间在后,分两种情况,然后对区间相交还是覆盖又分了两种情况。

 

int main(){    while(~scanf("%d%d%d%d", &a, &b, &c, &d)) {        int len;        if(b < c || a > d) len = 0;        else {            //先分区间先后,再分区间相交还是覆盖            //这就是普通做法            if(c >= a) {                if(d <= b) len = d-c+1;                else len = b-c+1;            }else {                if(b <= d) len = b-a+1;                else len = d-a+1;            }        }        printf("%d\n", len);    }}

【快速求法】

int main(){    while(~scanf("%d%d%d%d", &a, &b, &c, &d)) {        int len;        int s = min(b, d) - max(a, c) + 1;        len = max(0, s);        printf("%d\n", len);    }}

 

转载于:https://www.cnblogs.com/Roni-i/p/9565070.html

你可能感兴趣的文章
数据库设计三范式
查看>>
Eclipse插件开发- view to view drag drop
查看>>
Linux 技巧:让进程在后台可靠运行的几种方法
查看>>
根据Servlet的Filter自定义实现字符编码过滤器
查看>>
oh-my-zsh安装与配置
查看>>
git修改远程仓库地址
查看>>
Guess the number
查看>>
iscsi网络存储
查看>>
团队随笔
查看>>
Java内存块说明
查看>>
List集合具体对象的特点
查看>>
网络信息安全之防火墙***检测方法 (五)
查看>>
怎样为用户写“招标书”
查看>>
1.7 文件目录管理及相关的命令使用方法
查看>>
PDF中添加页面/合并 PDF 内容
查看>>
JS仿FLASH特效可跳转回首页的CSS二级联动菜单
查看>>
页面导入样式时,使用link和@import有什么区别?
查看>>
类成员与类的实例成员
查看>>
Spark源码编译并在YARN上运行WordCount实例
查看>>
Spring AOP + AspectJ annotation example
查看>>