LeetCode56. 合并区间
原创
©著作权归作者所有:来自51CTO博客作者Java全栈研发大联盟的原创作品,请联系作者获取转载授权,否则将追究法律责任
题目传送地址: https://leetcode.cn/problems/merge-intervals/
运行效率:

代码如下:
class Solution {
public static int[][] merge(int[][] intervals) {
//先将区间项进行排序 因为区间项有可能是这样{{1,4},{0,4}}; 排序成{{0,4},{1,4}}
Arrays.sort(intervals, Comparator.comparingInt(o -> o[0]));
//处理边界情况
if(intervals.length==1){
return intervals;
}
List<int[]> list = new ArrayList<>();
int intervalStart = intervals[0][0]; //区间起点
int intervalEnd = intervals[0][1]; //区间结尾
for (int i = 1; i < intervals.length; i++) {
int start = intervals[i][0];
int end = intervals[i][1];
if (intervalEnd >= start) { //重叠情况 当前遍历项和区间出现重叠
intervalEnd = Math.max(intervalEnd, end); } else { // 无重叠情况
int[] interval = new int[2];
interval[0] = intervalStart;
interval[1] = intervalEnd;
list.add(interval);
intervalStart = start;
intervalEnd = end;
}
if(i==intervals.length-1){ //遍历到最后一个区间项了
int[] interval = new int[2];
interval[0] = intervalStart;
interval[1] = intervalEnd;
list.add(interval);
}
}
int[][] result = new int[list.size()][];
result = list.toArray(result);
return result;
}
}