- 无重叠区间
给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。
class Solution {
public int eraseOverlapIntervals(int[][] intervals) {
//先排序,按照左边界升序,注意这种方法如果左边界相等,则不予处理
Arrays.sort(intervals, (a, b) -> {
return Integer.compare(a[0], b[0]);
});
int result = 0;
int pre = intervals[0][1];
for (int i = 1; i < intervals.length; i++) {
if (intervals[i][0] < pre) {//有重叠
result++;//去除数量+1
pre = Math.min(intervals[i][1], pre);//保留前面重叠区间右端点最小的整个区间。注意这里不可直接进行右端点的区间的局部更新!!
} else {
pre = intervals[i][1];//没有重叠,则右端点则保持正常
}
}
return result;
}
}