无重叠区间:给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。
思路:先对数组按右边界进行排序,从最小的右边界开始与下一个的左边界进行比较,如果大于则i++,如果小于则交换边界,并且count++。
public int eraseOverlapIntervals(int[][] intervals) {
if(intervals.length == 0) return 0;
Arrays.sort(intervals,new Comparator<int [] >(){
public int compare(int [] a1,int [] a2) {
return a1[1] - a2[1]; //升序排列
}
});
int count = 1;
int end = intervals[0][1];
for (int i = 0; i < intervals.length; i++){
if (end <= intervals[i][0]){
end = intervals[i][1];
count++;
}
}
return intervals.length - count;
}