区间(时段)重叠判断

业务中经常遇到判断区间是否重叠的问题:


时间段是否重叠

代码如下:

founction rangeRepeat(array) {
      //判断区间是否重复
      // array: [[start, end], [start, end], ...]
      // end > start
      const concatArr = Array.prototype.concat.apply([], array).sort();
      for (let i = 0; i < concatArr.length; i += 2) {
        const start = concatArr[i];
        const end = concatArr[i + 1];
        const isRangeStartAndEnd = array.some(item => {
          return item[0] === start && item[1] === end
        })

        if(isRangeStartAndEnd) {
          continue
        } else {
          // 有重复区间
          return  true;
        }
      }
      return false;
    }

思路:把区间想象成一个以为数轴。每个区间都是数轴的一部分。将区间的开始和结束值合并成一个数组,然后排序。判断有序数组的2n2n+1项,是否是某一个区间的开始和结束值。如果不是则区间有重叠,否则无重叠。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1 初级排序算法 排序算法关注的主要是重新排列数组元素,其中每个元素都有一个主键。排序算法是将所有元素主键按某种方...
    深度沉迷学习阅读 5,388评论 0 1
  • 一些概念 数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这...
    Winterfell_Z阅读 11,470评论 0 13
  • 1、用C语言实现一个revert函数,它的功能是将输入的字符串在原串上倒序后返回。 2、用C语言实现函数void ...
    希崽家的小哲阅读 11,587评论 0 12
  • 前言 2. 实现 Singleton 3. 数组中重复的数字 4. 二维数组中的查找 5. 替换空格 6. 从尾到...
    Observer_____阅读 8,183评论 0 1
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 8,075评论 2 9

友情链接更多精彩内容