zoukankan      html  css  js  c++  java
  • 快速判断&求出区间相交的长度

    有两个区间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
    ", 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
    ", len);
        }
    }
  • 相关阅读:
    jquery 插件扩展2
    jquery 插件扩展
    call apply bind
    bom object
    js oop 封装
    js oop 继承
    js页面之间传参2
    js弹出新窗口的6中方法
    display Tag
    js中extends方法
  • 原文地址:https://www.cnblogs.com/Roni-i/p/9565070.html
Copyright © 2011-2022 走看看