給出一個區(qū)間的集合搬设,請合并所有重疊的區(qū)間霞揉。
示例 1:
輸入: [[1,3],[2,6],[8,10],[15,18]]
輸出: [[1,6],[8,10],[15,18]]
解釋: 區(qū)間 [1,3] 和 [2,6] 重疊, 將它們合并為 [1,6].
示例 2:
輸入: [[1,4],[4,5]]
輸出: [[1,5]]
解釋: 區(qū)間 [1,4] 和 [4,5] 可被視為重疊區(qū)間。
class Solution {
public int[][] merge(int[][] intervals) {
int len = intervals.length;
if(len == 0 ){
return intervals;
}
ArrayList<int[]> array = new ArrayList<>();
// Arrays.sort(intervals, new Comparator<int[]>() {
// @Override
// public int compare(int[] o1, int[] o2) {
// return o1[0]-o2[0];
// }
// });
Arrays.sort(intervals,(o1,o2)->o1[0]-o2[0]);
int start = intervals[0][0], end = intervals[0][1];
// int t = 0;
// int[] nums = new int[2];
for(int i = 1; i < len; i++){
if(intervals[i][0] <= end){
// end = intervals[i][1] > end ? intervals[i][1] : end;
end = Math.max(intervals[i][1],end);
}else{
// int[] nums = new int[2];
// nums[0] = start;
// nums[1] = end;
// array.add(nums);
array.add(new int[]{start,end});
start = intervals[i][0];
end = intervals[i][1];
}
}
// int[] nums = new int[2];
// nums[0] = start;
// nums[1] = end;
// array.add(nums);
array.add(new int[]{start,end});
// int[][] mn = new int[array.size()][2];
// for(int i =0; i < array.size(); i++){
// mn[i] = array.get(i);
// }
// return mn;
return array.toArray(new int[0][]);
}
}
哈哈哈哈哈碰酝,我寫的代碼太垃圾了胀滚。(注釋