题目描述:

解题思路:
首先,我们对 intervals 数组按区间的起始位置进行排序。排序后,区间的开始位置会按照从小到大的顺序排列。这是因为,区间的合并操作需要按顺序进行,所以首先要确保每个区间的起始位置从小到大排列。
之后我们就可以遍历整个2维数组,不难发现,如果两个区间可以合并,那么第二个子数组的起点值一定小于第一个数组的终点,至于合并区间的终点,自然是第一个子数组和第二个子数组的终点的最大值。
不断遍历数组即可求出所有的子区间。
代码:
java
class Solution {
public int[][] merge(int[][] intervals) {
Arrays.sort(intervals,(p,q)->p[0]-q[0]);
List<int[]> ans=new ArrayList<>();
for(int[] p:intervals){
int m=ans.size();
if(m>0&&p[0]<=ans.get(m-1)[1]){
ans.get(m-1)[1]=Math.max(p[1],ans.get(m-1)[1]);
}else{
ans.add(p);
}
}
return ans.toArray(new int[ans.size()][2]);
}
}