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; }}

标签: