来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/merge-intervals 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
给出一个区间的集合,请合并所有重叠的区间。
示例 1:
输入: [[1,3],[2,6],[8,10],[15,18]] 输出: [[1,6],[8,10],[15,18]] 解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6]. 示例 2:
输入: [[1,4],[4,5]] 输出: [[1,5]] 解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。
贪心法,类似看电视节目;按照起始时间排序,然后比较前一个结束时间与当前循环元素起始时间; 若前一个结束时间小于当前循环元素起始时间,说明两者之间没有时间重叠,继续下一轮循环即可; 反之两者之间有交叉,需要将前一个元素的结束时间与当前循环元素的结束时间比较取较大值作为两者合并后的新的区间右边界,然后继续循环。
//res.toArray栈数组转换为二维数组 //List<int[]> res = new LinkedList<>();//声明集合数组 使用Arrays.sort对二维数组分别按行和列排序(Java): https://blog.csdn.net/chao_ji_cai/article/details/100072293