合并区间
2026年3月17日大约 1 分钟
合并区间
使用的方法
Arrays.sort(): 对二维数组进行排序,按照每个子数组的第一个元素进行排序。List<int[]>: 使用列表来存储合并后的区间。
解题思路
- 首先对输入的二维数组
intervals进行排序,按照每个子数组的第一个元素进行排序。 - 初始化一个列表
result来存储合并后的区间。 - 定义一个数组
current来表示当前正在处理的区间,初始值为intervals[0]。 - 遍历排序后的二维数组
intervals,对于每个区间next:- 如果
next[0]小于或等于current[1],说明两个区间有重叠,更新current[1]为current[1]和next[1]中的较大值。 - 否则,说明两个区间没有重叠,将
current添加到result列表中,并将current更新为next。
- 如果
- 最后,将最后一个
current添加到result列表中,并将result转换为二维数组返回。
代码实现
class Solution {
public int[][] merge(int[][] intervals) {
Arrays.sort(intervals,(a,b)-> Integer.compare(a[0],b[0]));
List<int[]> result = new ArrayList<>();
int[] current = intervals[0];
for(int i=1;i<intervals.length;i++){
int[] next = intervals[i];
if(next[0] <= current[1]){
current[1] = Math.max(current[1],next[1]);
} else {
result.add(current);
current = next;
}
}
result.add(current);
return result.toArray(new int[result.size()][]);
}
}