题目的链接在这里:https://leetcode-cn.com/problems/merge-intervals/
- 题目大意
- 一、示意图
- 二、解题思路
- 贪心加数组原地修改
题目大意 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。
一、示意图 二、解题思路
贪心加数组原地修改贪心加数组原地修改
代码如下:
class Solution {
public int[][] merge(int[][] intervals) {
//先根据左边界来进行排序 //第二个参数是 Comparator 这个是lambda
Arrays.sort(intervals, new Comparator() {
@Override
public int compare(int[] o1, int[] o2) {
return o1[0]-o2[0];
}
});
List res=new linkedList<>();
int start=intervals[0][0];
for(int i=1;iintervals[i-1][1]){
res.add(new int[]{start,intervals[i-1][1]});
//然后更新start
start=intervals[i][0];
}else{
//说明可以合并 那就更新尾巴
intervals[i][1]=Math.max(intervals[i][1],intervals[i-1][1]);
}
}
//最后更新一波
res.add(new int[]{start,intervals[intervals.length-1][1]});
return res.toArray(new int[res.size()][]);
}
}


![java leetcode之[中等]56. 合并区间 java leetcode之[中等]56. 合并区间](http://www.mshxw.com/aiimages/31/631142.png)
