剑指 Offer II 074. 合并区间
Posted 不吐西瓜籽
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指 Offer II 074. 合并区间相关的知识,希望对你有一定的参考价值。
算法记录
LeetCode 题目:
以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。
说明
一、题目
输入:intervals = [[1,3],[2,6],[8,10],[15,18]]
输出:[[1,6],[8,10],[15,18]]
解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
二、分析
- 没有啥算法上面的难点,关键是考验编码能力,将包含的情况分析完之后就可以了。
class Solution {
public int[][] merge(int[][] intervals) {
Arrays.sort(intervals, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return o1[0] - o2[0];
}
});
List<int[]> res = new ArrayList();
for(int i = 0; i < intervals.length; i++) {
int t = intervals[i][0], k = intervals[i][1], j = i + 1;
while(j < intervals.length && k >= intervals[j][0]) {
k = Math.max(k, intervals[j][1]);
j++;
}
i = j - 1;
res.add(new int[]{t, k});
}
int[][] ans = new int[res.size()][];
for(int i = 0; i < ans.length; i++) ans[i] = res.get(i);
return ans;
}
}
总结
注意列表和数组的转换。
以上是关于剑指 Offer II 074. 合并区间的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode810. 黑板异或游戏/455. 分发饼干/剑指Offer 53 - I. 在排序数组中查找数字 I/53 - II. 0~n-1中缺失的数字/54. 二叉搜索树的第k大节点(代码片段