上海高端网站建,网站教育机构排行前十名,网页设计模板html代码盒子,网站建设与管理的展望与未来给出一个区间的集合#xff0c;请合并所有重叠的区间。
示例 1:
输入: [[1,3],[2,6],[8,10],[15,18]] 输出: [[1,6],[8,10],[15,18]] 解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6]. 示例 2:
输入: [[1,4],[4,5]] 输出: [[1,5]] 解释: 区间 [1,4] 和 [4,5] 可被视为…给出一个区间的集合请合并所有重叠的区间。
示例 1:
输入: [[1,3],[2,6],[8,10],[15,18]] 输出: [[1,6],[8,10],[15,18]] 解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6]. 示例 2:
输入: [[1,4],[4,5]] 输出: [[1,5]] 解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。
思路先给每行数按照第一个数字排序
之后遍历如果nums[i][0]nums[i1][0]nums[i][1]nums[i1][1],说明两个数组可以合并否则把nums[i][0],nums[i][1]加入要输出的区间之后把i1设为新的标志开始比较
提交的代码
class Solution { public int[][] merge(int[][] intervals) { if (intervals null || intervals.length 0) { return intervals; } Arrays.sort(intervals, new Comparatorint[]() { public int compare(int[] o1, int[] o2) { if (o1[0] o2[0]) { return o1[1] - o2[1]; } return o1[0] - o2[0]; } }); int aintervals[0][0],bintervals[0][1]; int nums[][] new int[intervals.length][2]; if(intervals.length1) { return intervals; } int k0; //System.out.println(a b); for(int i1;iintervals.length;i) { if(intervals[i][0]abintervals[i][0]) { b Math.max(b, intervals[i][1]); } else { nums[k][0] a; nums[k][1] b; k; a intervals[i][0]; b intervals[i][1]; } nums[k][0] a; nums[k][1] b; //System.out.println(a b); } int n[][] new int[k1][2]; for(int i0;ik;i) { n[i][0] nums[i][0]; n[i][1] nums[i][1]; } return n; }
}