思路:
总的区间数 - 最大的剩余区间 = 需要移除额最小区间数。所以用贪心的思想。首先按左端点升序排列,然后遍历看有无重叠,如果没有重叠最大剩余区间的计数+1.
class Solution {
public int eraseOverlapIntervals(int[][] intervals) {
int n = intervals.length;
if(intervals.length == 0 || intervals[0].length == 0)
return 0;
Arrays.sort(intervals, (o1, o2) -> {
if(o1[1] != o2[1])
return o1[1] - o2[1];
return o1[0] - o2[0];
});
int maxCount = 1;
int pre = 0;
for(int i = 1; i < n; i++){
if(intervals[pre][1] <= intervals[i][0]){
maxCount++;
pre = i;
}
}
return n - maxCount;
}
}