56. Merge Intervals
class Solution {
public int[][] merge(int[][] intervals) {
if(intervals == null || intervals.length == 0) return intervals;
Arrays.sort(intervals, (a, b) -> a[0] - b[0]);
List<int[]> result = new ArrayList<>();
int start = intervals[0][0];
int end = intervals[0][1];
for (int interval[] : intervals) {
// 這裡會是第一個元素先近來, 也沒差(預設s e 第一個元素
// 跑完還是會第一個元素的 s e
if (end >= interval[0]) {
end = Math.max(end, interval[1]); // for this case [[1,4],[2,3]]
} else {
result.add(new int[]{start, end});
start = interval[0];
end = interval[1];
}
}
// 最後還要加上最後的 s e
result.add(new int[]{start, end});
return result.toArray(new int[result.size()][]);
}
}newest version
Last updated