排序
public int[][] merge(int[][] intervals) {
List<int[]> list = new ArrayList<>();
Arrays.sort(intervals,(a,b)->a[0]-b[0]);
int i = 0, n = intervals.length;
while(i< n ){
int l = intervals[i][0] ,r = intervals[i][1];
while(i < n-1 && r >=intervals[i+1][0]){
r = Math.max(r,intervals[i+1][1]);
i++;
}
list.add(new int[]{l,r});
i++;
}
return list.toArray(new int[0][]);
}方法1:HashMap+桶排
方法2:HashMap+大根堆
方法3:HashMap+TreeMap
方法4:快速排序
方法1:找最小值
方法1:排序+找中位数

方法2:排序+双指针
设x在区间[a,b]范围内,将a变成x需要x-a步,将b变成x需要b-x步,总的步数是x-a+(b-x) = b-a即区间的差,x其实可以在这个区间内任意取
方法3:快排+找中位数
方法1:快排
方法1:辅助数组+排序
方法2:桶排序
Reference
Last updated