解法一:贪心
贪心算法的经典问题——活动安排。按照结束值升序排列。首先第一项必选,然后从第二项开始,后续的区间如果只要与上一个已选区间不重叠就选。按照此贪心策略,可以求出最多可选的不重叠区间的数量,即可反推出最少需要删除区间的数量。
import java.util.Arrays;
class Solution {
public int eraseOverlapIntervals(int[][] intervals) {
if (intervals.length == 0) {
return 0;
}
Arrays.sort(intervals, (o1, o2) -> o1[1] - o2[1]);
int ans = 1;
int lastFinal = intervals[0][1];
for (int i = 1; i < intervals.length; ++i) {
if (intervals[i][0] >= lastFinal) {
lastFinal = intervals[i][1];
++ans;
}
}
return intervals.length - ans;
}
}