435. 无重叠区间(★)
- 题目链接:435. 无重叠区间
- 解题思路:首先想到应该排序,例如按右边界大小排序,从左往右去找区间的时候尽可能找右边界小的,这样留给后面的空间就更大(贪心)
- 主要难点:不需要完整分析每个区间的数值变化,只需要计算需要移除的区间数量就可以,用总区间数减去非交叉区间数可以得到,重点就是怎么算非交叉区间的数量
- 解题时间:30+5
- 代码:
class Solution {
public int eraseOverlapIntervals(int[][] intervals) {
Arrays.sort(intervals, (a,b)-> {
return Integer.compare(a[0],b[0]);
});
int count = 1;
for(int i=1;i<intervals.length;i++){
if(intervals[i][0]<intervals[i-1][1]){
intervals[i][1]=Math.min(intervals[i-1][1],intervals[i][1]);
continue;
}else{
count++;
}
}
return intervals.length-count;
}
}