题目
返回不重叠的区间数组,这个数组刚好覆盖输入中的所有区间
https://leetcode-cn.com/problems/merge-intervals/
思路
把intervals里面的区间排序,然后使用ArrayList存储区间,直接比较ArrayList的最后一个区间a 和intervals里面下一个区间 b ,如果不重叠直接假如,如果重叠的话修改a
⚠️ 修改最后一个区间的时候要考虑 a b 可能是相交,也可能是 a 完全包含 b,所以最后一个区间的右端点需要取最大值
代码
class Solution {
public int[][] merge(int[][] intervals) {
//排序
Arrays.sort(intervals, (interval1, interval2) -> interval1[0] - interval2[0]);
ArrayList<int[]> result = new ArrayList<int[]>();
for (int i = 0; i < intervals.length; i ++) {
int left = intervals[i][0];
int right = intervals[i][1];
if (result.size() ==0 || result.get(result.size() - 1)[1] < left){
result.add(new int[]{left, right});
}
else{
result.get(result.size() - 1)[1] = Math.max(result.get(result.size() - 1)[1],right);
}
}
return result.toArray(new int[result.size()][]);
}
}