【每日一题】【List与Array互转】【工具类的使用】2021年12月10日-56. 合并区间
以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/merge-intervals
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
答案:
class Solution { public int[][] merge(int[][] intervals) { if(intervals.length <= 1 || intervals == null) { return intervals; } List<int[]> res = new ArrayList<>(); Arrays.sort(intervals, (o1, o2) -> o1[0] - o2[0]); int i = 0; int n = intervals.length - 1; while(i <= n) { int left = intervals[i][0]; int right = intervals[i][1]; //注意i的取值范围 while(i < n && right >= intervals[i + 1][0]) { right = Math.max(right, intervals[i + 1][1]); i++; } res.add(new int[]{left, right}); i++; } //list.toArray(维度) return res.toArray(new int[res.size()][2]); } }
本文来自博客园,作者:哥们要飞,转载请注明原文链接:https://www.cnblogs.com/liujinhui/p/15673804.html