本文主要是介绍leetcode56:合并区间,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
合并区间
以数组 intervals
表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi]
。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。
public int[][] merge(int[][] intervals) {if(intervals.length == 1){return intervals;}Arrays.sort(intervals,((o1, o2) -> {return o1[0] - o2[0];}));int start = intervals[0][0];int end = intervals[0][1];ArrayList<int[]> list = new ArrayList<int[]>();for (int i = 1; i < intervals.length; i++) {if(intervals[i][0]>end){list.add(new int[]{start,end});start = intervals[i][0];end = intervals[i][1];}else{end = Math.max(intervals[i][1],end);}if(i == intervals.length-1){list.add(new int[]{start,end});}}int[][] res = new int[list.size()][2];for (int i = 0; i < list.size(); i++) {res[i] = list.get(i);}return res;}
贪心,先排序,再合并即可
这篇关于leetcode56:合并区间的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!