56 合并区间
Posted HardyDragon_CC
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了56 合并区间相关的知识,希望对你有一定的参考价值。
56 合并区间
class Solution
public int[][] merge(int[][] intervals)
List<int[]> res = new LinkedList<>();
Arrays.sort(intervals, (o1, o2) -> Integer.compare(o1[0], o2[0]));
int start = intervals[0][0];
for (int i = 1; i < intervals.length; i++)
if (intervals[i][0] > intervals[i - 1][1])
res.add(new int[]start, intervals[i - 1][1]);
start = intervals[i][0];
else
intervals[i][1] = Math.max(intervals[i][1], intervals[i - 1][1]);
res.add(new int[]start, intervals[intervals.length - 1][1]);
return res.toArray(new int[res.size()][]);
思路:
- 对区间按左边界进行升序排序
- 按照前后元素比较的方式遍历区间数组,遇到当前区间的左边大于前一个区间的右边界的,说明这两个区间不重叠,可以添加到结果集。反之,遇到重叠区间的需要更新区间的最大右边界。
- 当遍历完最后一个左边界后,还需要再添加最后一次区间。
- 最后将 list 转换为二维的区间数组
以上是关于56 合并区间的主要内容,如果未能解决你的问题,请参考以下文章