1. /**
    2. * @param {number[][]} intervals
    3. * @return {number}
    4. */
    5. var removeCoveredIntervals = function (intervals) {
    6. intervals.sort((a, b) => {
    7. // 按照起点升序排列,起点相同时降序排列(对于这两个起点相同的区间,我们需要保证长的那个区间在上面(按照终点降序),这样才会被判定为覆盖,否则会被错误地判定为相交)
    8. if (a[0] == b[0]) {
    9. return b[1] - a[1];
    10. }
    11. return a[0] - b[0];
    12. });
    13. // 记录合并区间的起点和终点
    14. let left = intervals[0][0];
    15. let right = intervals[0][1];
    16. let res = 0;
    17. for (let i = 1; i < intervals.length; i++) {
    18. let cur = intervals[i];
    19. // 情况一 找到覆盖区间
    20. if (left <= cur[0] && right >= cur[1]) {
    21. res++;
    22. }
    23. // 情况二 找到相交区间 合并
    24. if (right >= cur[0] && right <= cur[1]) {
    25. right = cur[1];
    26. }
    27. // 情况三 完全不相交 更新起点和终点
    28. if (right < cur[0]) {
    29. left = cur[0];
    30. right = cur[1];
    31. }
    32. }
    33. return intervals.length - res;
    34. };

    删除被覆盖区间 - 图1
    https://leetcode-cn.com/problems/remove-covered-intervals/solution/qiu-qu-jian-wen-ti-de-tao-lu-du-shi-xian-rvix/