目录
一、题目描述
二、整体思路
要求移除区间的最小个数,也就是要求使得剩余区间互不重叠的最大区间数。
可以先将区间按右端点的值进行升序排序,然后遍历数组,在此基础上保留左端点>=最小右端点的值的区间,再把最小右端点更新为当前的右端点的值。这样我们可以只判断遍历到的区间的左端点是否会与保留的区间的右端点产生重合的情况。
三、代码
class Solution {
public int eraseOverlapIntervals(int[][] intervals) {
if(intervals.length==1){
return 0;
}
Arrays.sort(intervals,new Comparator<int[]>(){
public int compare(int[] s1,int s2[]){
return s1[1]-s2[1];
}
});
int res=1;
int right=intervals[0][1];
for(int i=1;i<intervals.length;i++){
if(intervals[i][0]>=right){
res++;
right=intervals[i][1];
}
}
return intervals.length-res;
}
}