海南网站建设软件无锡百度推广代理公司
题目链接:
力扣435 -无重叠区间
解题思路:和之前的合并区间、汇总区间都比较相似,
- 先对二维数组排序,按照左边界升序;
- 当 当前区间的左区间 < 前一个区间的右区间,说明有重叠,res+1,还要更新当前区间的右区间,选择两个区间的右边界的最小值。
代码实现:
class Solution {/*** 1. 先对二维数组排序,按照左边界升序* 2. 当 当前区间的左区间 < 前一个区间的右区间,说明有重叠,res+1,还要更新当前区间的右区间,选择两个区间的右边界的最小值*/public int eraseOverlapIntervals(int[][] intervals) {if (intervals.length == 1) {return 0;}Arrays.sort(intervals, (x, y) -> x[0] == y[0] ? x[1] - y[1] : x[0] - y[0]);// 排序int res = 0;// 计数int len = intervals.length;for (int i = 1; i < len; i++) {if (intervals[i][0] < intervals[i - 1][1]) {// 有重叠res++;intervals[i][1] = Math.min(intervals[i - 1][1], intervals[i][1]);}}return res;}
}