使用贪心求出最大不重叠区间,然后用总区间数减去它。
将区间以右端点从小到大排序,然后选取不重叠的区间即可。
为什么贪心是正确的?
简单的说就是优先选择越早结束的区间,会留下更多空间选择其他区间。
class Solution {
public int eraseOverlapIntervals(int[][] intervals) {
int count = 0;
Arrays.sort(intervals, new Comparator<int[]>(){
@Override
public int compare(int[] a, int[] b){
return a[1] - b[1];
}
});
int end = Integer.MIN_VALUE;
for(int i = 0; i < intervals.length; i++){
if(end <= intervals[i][0]){
end = intervals[i][1];
count++;
}
}
return intervals.length - count;
}
}