0
点赞
收藏
分享

微信扫一扫

Day34 合并区间

以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间

https://leetcode-cn.com/problems/merge-intervals/

示例1:

示例2:

提示:

Java解法

package sj.shimmer.algorithm.m2;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by SJ on 2021/2/27.
 */

class D34 {
    public static void main(String[] args) {
        int[][] merge = merge(new int[][]{{1, 3}, {2, 6}, {8, 10}, {15, 18}});
        int[][] merge1 = merge(new int[][]{{1, 4}, {4, 5}});
        int[][] merge2 = merge(new int[][]{{2,3},{2,2},{3,3},{1,3},{5,7},{2,2},{4,6}});
        for (int[] ints : merge2) {
            for (int anInt : ints) {
                System.out.print(anInt);
                System.out.print(",");
            }
            System.out.println("---");
        }
    }
    public static int[][] merge(int[][] intervals) {
        List<int[]> list = new ArrayList<>();
        for (int[] interval : intervals) {
            list.add(interval);
        }
        List<int[]> merge = merge(list, 0);
        return merge.toArray(new int[merge.size()][2]);
    }
    public static List<int[]> merge(List<int[]> lists,int index) {
        if (lists != null&&lists.size()>index) {
            int[] compare = lists.get(index);
            for (int i = index+1; i < lists.size(); i++) {
                int[] interval = lists.get(i);
                //无重叠情况
                if (interval[0]>compare[1]||interval[1]<compare[0]) {
                    if (i==lists.size()-1) {
                        return merge(lists,++index);
                    }
                    continue;
                }else {
                    compare[0]=Math.min(interval[0],compare[0]);
                    compare[1]=Math.max(interval[1],compare[1]);
                    lists.remove(interval);
                    return merge(lists,index);
                }
            }
        }
        return lists;
    }
}

官方解

https://leetcode-cn.com/problems/merge-intervals/solution/he-bing-qu-jian-by-leetcode-solution/

  1. 排序

    • 时间复杂度:O(n log n)

    • 空间复杂度:O(log n)

举报

相关推荐

0 条评论