[路飞]leetcode-1288.删除被覆盖区间

107 阅读1分钟

给你一个区间列表,请你删除列表中被其他区间所覆盖的区间。

只有当 c <= a 且 b <= d 时,我们才认为区间 [a,b) 被区间 [c,d) 覆盖。

在完成所有删除操作后,请你返回列表中剩余区间的数目。力扣原文

 

示例:

输入: intervals = [[1,4],[3,6],[2,8]]
输出: 2
解释: 区间 [3,6] 被区间 [2,8] 覆盖,所以它被删除了。

 

解题

var removeCoveredIntervals = function (intervals) {
  if (intervals.length <= 0) return 0;
  intervals.sort((a, b) => {
    if (a[0] === b[0]) {
      return b[1] - a[1];
    }
    return a[0] - b[0];
  });
  let count=0,len=intervals.length,i=0;
  while(i<len){
      let [left,right]=intervals[i],j=i+1
      while(j<len&&left<=intervals[j][0]&&right>=intervals[j][1]){
          count++;
          j++
      }
      i=j
  }
  return len-count
};