欢迎来到飞鸟慕鱼博客,开始您的技术之旅!
当前位置: 首页知识笔记正文

56 合并区间 力扣 JAVA,力扣合并区间

墨初 知识笔记 44阅读
题目

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

解题思路 根据区间的起始点对区间进行排序排序后对交叉区间进行合并添加新的间隔区间当前区间只需要考虑与上一个存储区间的关系 代码展示
class Solution {    public int[][] merge(int[][] intervals) {        if(intervals.length  0) return intervals;        Map<Integer,Integer> data  new TreeMap<>();        Arrays.sort(intervals, new Comparator<int[]>() {            Override            public int compare(int[] o1, int[] o2) {                return o1[0] - o2[0];            }        });        data.put(intervals[0][0],intervals[0][1]);        int before  intervals[0][0];        for (int i  1; i < intervals.length; i){            if (intervals[i][0] > data.get(before)){                before  intervals[i][0];                data.put(intervals[i][0], intervals[i][1]);            } else {                data.put(before, Math.max(data.get(before), intervals[i][1]));            }        }        int[][] ans  new int[data.size()][2];        int index  0;        for (Integer num : data.keySet()){            ans[index][0]  num;            ans[index][1]  data.get(num);        }        return ans;    }}

标签:
声明:无特别说明,转载请标明本文来源!