删除被覆盖区间
给你一个区间列表,请你删除列表中被其他区间所覆盖的区间。
只有当 c <= a 且 b <= d 时,我们才认为区间 [a,b) 被区间 [c,d) 覆盖。
在完成所有删除操作后,请你返回列表中剩余区间的数目。
- 输入:intervals = [[1,4],[3,6],[2,8]]
- 输出:2
- 解释:区间 [3,6] 被区间 [2,8] 覆盖,所以它被删除了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| var removeCoveredIntervals = function(intervals) { intervals.sort((a, b) => { if (a[0] == b[0]) { return b[1] - a[1]; } return a[0] - b[0]; }); let i = 0, len = intervals.length, cut = 0;
while (i < len) { let [m, n] = intervals[i], j = i + 1;
while (j < len && m <= intervals[j][0] && n >= intervals[j][1]) { cut++; j++; } i = j; } return len - cut; };
|