https://leetcode.com/problems/merge-intervals/
- python
class Solution:
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
intervals.sort(key=lambda x:x[0])
i=0
while i<len(intervals)-1:
if intervals[i][1]>=intervals[i+1][0]:
intervals[i][1]=max(intervals[i+1][1],intervals[i][1])
del intervals[i+1]
else:
i+=1
return intervals
- java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
public class Main {
public static void main(String[] args) {
int[][] ans=new Solution().merge(new int[][]{{1,3},{2,6},{8,10},{15,18}});
for(int[] row:ans){
for (int ele:row){
System.out.print(ele+" ");
}
System.out.println();
}
}
}
class Solution {
Integer[][] toIntegers(int [][] a){ //todo: simplify
Integer[][] ret=new Integer[a.length][a[0].length];
for (int i = 0; i <a.length ; i++) {
for (int j = 0; j < a[0].length; j++) {
ret[i][j]=a[i][j];
}
}
return ret;
}
int[][] toInts(List<Integer[]> a){ // todo: simplify
int[][] ret=new int[a.size()][a.get(0).length];
for (int i = 0; i <a.size() ; i++) {
for (int j = 0; j < a.get(0).length; j++) {
ret[i][j]=a.get(i)[j];
}
}
return ret;
}
public int[][] merge(int[][] intervals) {
if(intervals.length==0)
return new int[][]{};
Arrays.sort(intervals, Comparator.comparing(e->e[0]));
// todo: simplify
List<Integer[]> list=Arrays.asList(toIntegers(intervals)); //代码简化:https://blog.csdn.net/Sun_nowU/article/details/90374481
List<Integer[]> arrayList=new ArrayList(list);
int i=0;
while (i<arrayList.size()-1){
if(arrayList.get(i)[1]>=arrayList.get(i+1)[0]){
arrayList.set(i,new Integer[]{arrayList.get(i)[0],
Math.max(arrayList.get(i)[1],arrayList.get(i+1)[1])});
arrayList.remove(i+1);
}else {
i++;
}
}
// todo: simplify
return toInts(arrayList);
}
}