LeetCode 热题100-26-合并区间

核心思想:双指针

class Solution {
    public int[][] merge(int[][] intervals) {
        if(intervals.length == 0){
            return new int[0][2];
        }
        if(intervals.length == 1){
            return intervals;
        }
        Arrays.sort(intervals,new Comparator<int[]>() {
            @Override
            public int compare(int[] intervals1, int[] intervals2){
                return intervals1[0] - intervals2[0];
            }
        });
        List<int[]> list = new ArrayList<>();
        int L = 0;
        int R = 1;
        while(R < intervals.length){
            if(list.size() != 0 && list.get(list.size() - 1)[1] >= intervals[R][0]){
                list.get(list.size() - 1)[1] = Math.max(list.get(list.size() - 1)[1],intervals[R][1]);
                R++;
            }else if(list.size() == 0 ){
                list.add(new int[]{intervals[L][0],intervals[L][1]});
            }else{
                L = R;
                list.add(new int[]{intervals[L][0],intervals[R][1]});
                R++;
            }
        }
        return list.toArray(new int[list.size()][]);
    }
}

你可能感兴趣的:(Leetcode热题100,leetcode)