合并區間
- 做題部落格連結
- 題目連結
- 描述
- 示例
- 初始代碼模闆
- 代碼
做題部落格連結
https://blog.csdn.net/qq_43349112/article/details/108542248
題目連結
https://leetcode-cn.com/problems/merge-intervals/
描述
以數組 intervals 表示若幹個區間的集合,其中單個區間為 intervals[i] = [starti, endi] 。請你合并所有重疊
的區間,并傳回一個不重疊的區間數組,該數組需恰好覆寫輸入中的所有區間。
提示:
1 <= intervals.length <= 104
intervals[i].length == 2
0 <= starti <= endi <= 104
示例
示例 1:
輸入:intervals = [[1,3],[2,6],[8,10],[15,18]]
輸出:[[1,6],[8,10],[15,18]]
解釋:區間 [1,3] 和 [2,6] 重疊, 将它們合并為 [1,6].
示例 2:
輸入:intervals = [[1,4],[4,5]]
輸出:[[1,5]]
解釋:區間 [1,4] 和 [4,5] 可被視為重疊區間。
初始代碼模闆
class Solution {
public int[][] merge(int[][] intervals) {
}
}
代碼
class Solution {
public int[][] merge(int[][] intervals) {
Arrays.sort(intervals, (o1, o2) -> o1[0] - o2[0]);
int[][] res = new int[intervals.length][2];
int idx = 0;
for (int[] cur : intervals) {
if (idx == 0 || cur[0] > res[idx - 1][1]) {
res[idx] = cur;
idx++;
} else {
res[idx - 1][1] = Math.max(res[idx - 1][1], cur[1]);
}
}
return Arrays.copyOf(res, idx);
}
}