classSolution:defmerge(self, intervals: List[List[int]])-> List[List[int]]:
res =[]
intervals.sort(key=lambda p: p[0])for p in intervals:if res and p[0]<= res[-1][1]:# 非空 & 相交
res[-1][1]=max(res[-1][1], p[1])else:
res.append(p)# 不相交return res
Java
classSolution{publicint[][]merge(int[][] intervals){List<List<Integer>> res =newArrayList<>();Arrays.sort(intervals,(a1, a2)->{return a1[0]- a2[0];});int left =Integer.MAX_VALUE, right =Integer.MIN_VALUE, i =0;while(i < intervals.length){
left =Math.min(left, intervals[i][0]);
right =Math.max(right, intervals[i][1]);++i;if(i == intervals.length || right < intervals[i][0]){
res.add(newArrayList<>(Arrays.asList(left, right)));
left =Integer.MAX_VALUE;
right =Integer.MIN_VALUE;}}int[][] resArray =newint[res.size()][2];for(i =0; i < res.size();++i){
resArray[i][0]= res.get(i).get(0);
resArray[i][1]= res.get(i).get(1);}return resArray;}}