
思路:

class Solution {
public int[][] merge(int[][] intervals) {
Arrays.sort(intervals, new Comparator<int[]>(){
public int compare(int[] a1, int[] a2)
{
return a1[0]-a2[0];//区间按照左端点的大小排序
}
});
ArrayList<int[]> merged = new ArrayList<>();
merged.add(intervals[0]);
for(int i=1;i<intervals.length;i++)
{
if(intervals[i][0]>merged.get(merged.size()-1)[1])
merged.add(intervals[i]);
else{
merged.get(merged.size()-1)[1] = Math.max(intervals[i][1],merged.get(merged.size()-1)[1]);
}
}
return merged.toArray(new int[merged.size()][]);
}
}
本文介绍了一种将重叠的区间进行合并的算法实现。通过定义一个比较器对输入的区间按左端点排序,并使用ArrayList存储合并后的区间。该算法遍历每个区间,如果当前区间的起始位置大于已合并区间末尾的结束位置,则将当前区间添加到结果列表中;否则更新已合并区间的结束位置为两个区间结束位置的最大值。
486

被折叠的 条评论
为什么被折叠?



