lc 435 无重叠区间
类似上一题 lc 2580 统计将重叠区间合并成组的方案数(贪心)
- 贪心
- 先按左边界排序
- 若有重叠,保留最小右边界,删除数++
class Solution {
public int eraseOverlapIntervals(int[][] intervals) {
// 按照区间起点排序
Arrays.sort(intervals, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return Integer.compare(o1[0], o2[0]);
}
});
int ans = 0;
int minRight = Integer.MIN_VALUE; // 记录已处理区间中的最大右端点
for (int[] interval : intervals) {
int left = interval[0];
int right = interval[1];
if (left >= minRight) { // 区间与已处理区间无交集
minRight = right;
} else {
minRight = Math.min(minRight, right); // 更新最大右端点
ans++;
}
}
return ans;
}
}