2020年最后一题: 无重叠区间(js)

题目描述:

给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。

注意:

可以认为区间的终点总是大于它的起点。
区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。

 

示例1:

输入: [ [1,2], [2,3], [3,4], [1,3] ]

输出: 1

解释: 移除 [1,3] 后,剩下的区间没有重叠。

示例2:

输入: [ [1,2], [1,2], [1,2] ]

输出: 2

解释: 你需要移除两个 [1,2] 来使剩下的区间没有重叠。

示例3:

输入: [ [1,2], [2,3] ]

输出: 0

解释: 你不需要移除任何区间,因为它们已经是无重叠的了。

难度:中等

题解:

var eraseOverlapIntervals = function(intervals) {
    if (!intervals.length) {
        return 0;
    }
   //将获取到的数组按照内部数组右侧元素的大小进行排序
      //例子[[1, 2],[2, 3],[1, 3],[3, 4]];,排序之后的数组是[[1,2],[2,3],[1,3],[3,4]]
      //排序的原因是为了方便后续的比较操作
      intervals.sort((a, b) => {
        return a[1] - b[1];
      });
        console.log(intervals);
      //定义变量存储个数
      var Count = 1;
      //数组长度,用于for循环
      var InterLength = intervals.length;
      //数组中首位元素数组中右侧元素
      var ReferenceEl = intervals[0][1];
      for (let i = 1; i < InterLength; i++) {
        if (intervals[i][0] >= ReferenceEl) {
          Count++;
          ReferenceEl = intervals[i][1];
        }
      }
      return InterLength - Count;
};

 

posted @ 2020-12-31 14:01  草莓糖&薄荷茶  阅读(198)  评论(0)    收藏  举报