java实现列表区间合并
时间: 2023-08-16 18:07:33 浏览: 53
假设我们有一个列表 `List<int[]> intervals`,每个元素是一个包含两个整数的数组,表示区间的起始位置和结束位置。现在需要将所有重叠的区间合并成一个区间,最终返回合并后的区间列表。
以下是一种简单的 Java 实现:
```java
public List<int[]> mergeIntervals(List<int[]> intervals) {
if (intervals.size() <= 1) {
return intervals;
}
// 按照起始位置升序排序
intervals.sort(Comparator.comparingInt(a -> a[0]));
List<int[]> merged = new ArrayList<>();
int[] curInterval = intervals.get(0);
for (int i = 1; i < intervals.size(); i++) {
int[] interval = intervals.get(i);
if (curInterval[1] >= interval[0]) {
// 有重叠,合并区间
curInterval[1] = Math.max(curInterval[1], interval[1]);
} else {
// 没有重叠,添加当前区间到结果列表中
merged.add(curInterval);
curInterval = interval;
}
}
// 添加最后一个区间
merged.add(curInterval);
return merged;
}
```
该算法的时间复杂度为 O(nlogn),其中 n 是区间的个数,主要来自于排序操作。空间复杂度为 O(n),主要来自于结果列表和临时变量的存储。