美文网首页
多个区间的重叠校验

多个区间的重叠校验

作者: 1海内无双1 | 来源:发表于2018-05-16 00:29 被阅读0次

    需求:

    要求校验多个时间区间是否存在重叠,在此把时间区间抽象成一个长度为2的数字数组,形如:[2,10]。

    思路:

    想校验多个区间是否存在重叠,方法还是很多的,例如:判断剩余区间合在一起的长度加上是所有区间的长度是否是24(不可能超过一天);是否存在一个值在两个以上区间出现过;按照起点按从小到大排序,如果小的区间的终点大于大一点的区间的起点就说明重叠。第二个办法逻辑简单缺点是效率低;第一个和第三个都需要先排序,相比较选择第三种较为方便。

    解决办法:

    
    var arr = [[14,22],[1,6],[8,12],[14,50]];
    
        function db(arr){
    
            //排序
    
            var index;
    
            for(var j=0;j
    
                for(var i=j+1;i
    
                    if(arr[i][0] < arr[j][0]){
    
                        index = arr[i];
    
                        arr[i] = arr[j];
    
                        arr[j] = index;
    
                    }
    
                }
    
            };
    
            //比较
    
            for(var j=0;j
    
                if(arr[j][1] > arr[j+1][0]){
    
                    index = "err";
    
                    break;
    
                }
    
            }
    
            if(index === "err"){
    
                return false;
    
            }
    
            return true;
    
        }
    
        db(arr);
    
    

    相关文章

      网友评论

          本文标题:多个区间的重叠校验

          本文链接:https://www.haomeiwen.com/subject/lqeudftx.html