博主头像
7024w的自留地

觉宇宙之无穷,识盈虚之有数

Leetcode 56. 合并区间

QQ截图20210921150911.png
QQ截图20210921150911.png

public int[][] merge(int[][] intervals) {
    if(intervals.length == 1 ){
        return intervals;
    }
    List<int[]> res = new LinkedList<>();
    //自定义数组排列规则
    Arrays.sort(intervals, (o1, o2) -> Integer.compare(o1[0], o2[0]));
    //此时数组已经升序排列
    int temp = intervals[0][0];
    for(int i = 1; i < intervals.length; i++){
        if(intervals[i][0] > intervals[i-1][1]){
            //此时不存在合并数组区间的可能,将结果加入链表中
            res.add(new int[]{temp,intervals[i -1][1]});
            //temp指向下一个起点
            temp = intervals[i][0];
        }else{
            //直接在数组中进行取最大值操作
            intervals[i][1] = Math.max(intervals[i][1],intervals[i-1][1]);
        }
    }
    //最后一定会缺一组
    res.add(new int[]{temp,intervals[intervals.length -1 ][1]});
    return res.toArray(new int[res.size()][]);
}
发表新评论