删除被覆盖区间

给你一个区间列表,请你删除列表中被其他区间所覆盖的区间。
只有当 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) {
// [x, y]按照x升序 y降序排列
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;
};