Java 解算法:合并区间
题目:以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals = 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。输入:intervals = [,,,]
输出:[,,]
解释:区间 和 重叠, 将它们合并为
这个题的目标是合并所有重叠的区间。解题思路是,先把数组的元素进行排序,再合并区间。
为什么要排序呢?因为将区间按照起始元素排序,才能让我们非常清晰地识别重叠的区间。
排序:首先,根据每个区间的起始元素对区间进行排序(按照首元素从小到大排)。
合并:然后,遍历排序后的区间列表,检查当前区间是否与前一个区间重叠。 如果重叠,合并这两个区间;如果不重叠,将当前区间添加到结果列表中。
具体步骤:
[*]排序:使用 Arrays.sort 方法对区间进行排序,排序的依据是每个区间的起始元素大小。
[*]合并:使用一个 LinkedList 来存储合并后的区间。遍历排序后的区间列表,对于每个区间,检查它是否与 LinkedList 中最后一个区间重叠。如果重叠,合并这两个区间;如果不重叠,将当前区间添加到 LinkedList 中。
[*]返回结果:将 LinkedList 转换为数组并返回。
我的Java代码:
class Solution { public int[][] merge(int[][] intervals) { if (intervals.lengtha - b); LinkedList merged = new LinkedList(); merged.add(intervals); int length = intervals.length; for (int i = 1; i < length; i++) { int[] current = intervals; int[] lastMerged = merged.getLast(); // 检查当前区间是否与最后一个合并的区间重叠 if (current
页:
[1]