排序

    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