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; };