奸轲嫣 发表于 7 天前

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]
查看完整版本: Java 解算法:合并区间