- 算法
贪心 - 核心思想
这道题类似于第452题 用最少数量的箭引爆气球,不断扩大自己的边界,如果无法扩大就保存至结果中。 - 代码
class Solution {
public int[][] merge(int[][] intervals) {
if(intervals.length == 1) return intervals;
Arrays.sort(intervals, (o1, o2) -> Integer.compare(o1[0], o2[0]));
int start = intervals[0][0];
int end = intervals[0][1];
int[][] result = new int[intervals.length][2];
int j = 0;
for(int i = 1;i < intervals.length;i++){
if(start<= intervals[i][0] && end >= intervals[i][0]){
if(end < intervals[i][1]) end = intervals[i][1];
}else{
result[j][0] = start;
result[j++][1] = end;
start = intervals[i][0];
end = intervals[i][1];
}
result[j][0] = start;
result[j][1] = end;
}
return Arrays.copyOf(result,j+1);
}
}