435.无重叠区间

2020-06-10
无重叠区间

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

注意:
  • 可以认为区间的终点总是大于它的起点。
  • 区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。
题解:
思路1:贪心算法
/**
 * @param {number[][]} intervals
 * @return {number}
 */
var eraseOverlapIntervals = function (intervals) {
  if (intervals.length <= 1) return 0; // 如果数组小于2项 必定是没用重复
  intervals.sort((a, b) => a[1] - b[1]); // 按照数组第二项的大小 从小到大排序
  let count = 1, tmp = intervals[0]; // count 是满足条件没有重叠的 tmp是上一次没有重叠的那一项
  for (let i = 1; i < intervals.length; i++) {
    // 只要tmp的第二项小于等于当前第一项的值 那么必定是没有重叠的
    // count数量+1 tmp转为当前节点 继续遍历下一项
    if (tmp[1] <= intervals[i][0]) {
      count++;
      tmp = intervals[i];
    }
  }
  return intervals.length - count;
};
原文地址:https://www.cnblogs.com/lanpang9661/p/13087108.html