1288. 删除被覆盖区间
示例:
输入:intervals = [[1,4],[3,6],[2,8]]
输出:2
解释:区间 [3,6] 被区间 [2,8] 覆盖,所以它被删除了。
思路
题意:计算未被覆盖区间的个数。
方法:对所有区间按起始元素排序,若起始元素相同则将较长区间放在前面。随后遍历所有区间进行计数,若新区间的终止元素小于等于上一个旧区间的终止元素,说明这个区间被覆盖了(起始元素大于等于旧区间,且终止元素小于等于旧区间);若大于上一个旧区间的终止元素,说明未被覆盖,计数加1。
代码
class Solution {
public int removeCoveredIntervals(int[][] intervals) {
Arrays.sort(intervals, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return o1[0] == o2[0] ? o2[1] - o1[1] : o1[0] - o2[0];
}
});
int count = 0;
int end = 0;
int preEnd = 0;
for (int[] nums: intervals) {
end = nums[1];
if (end > preEnd) {
count++;
preEnd = end;
}
}
return count;
}
}