
解析
Arrays.sort(intervals, new Comparator<int[]>() {
public int compare(int[] interval1, int[] interval2) {
return interval1[0] - interval2[0];
}
});
Arrays.sort(intervals, (o1, o2) -> o1[0] - o2[0]);
for (int i = 0; i < intervals.length; i++) {
int l = intervals[i][0];
int r = intervals[i][1];
int j = i + 1;
if (res.size() == 0 || res.get(res.size() - 1)[1] < l) {
res.add(intervals[i]);
} else {
res.get(res.size() - 1)[1] = Math.max(res.get(res.size() - 1)[1], intervals[i][1]);
}
}
for (int i = 0; i < intervals.length; ) {
j = i + 1;
res.add(intervals[i]);
while (j < intervals.length && intervals[j][0] <= intervals[i][1]) {
res.get(res.size() - 1)[1] = Math.max(res.get(res.size() - 1)[1], intervals[j][1]);
j++;
}
i = j;
}
完整代码
class Solution {
public int[][] merge(int[][] intervals) {
//解法一
if (intervals.length == 0) {
return new int[0][2]
}
Arrays.sort(intervals, (o1, o2) -> o1[0] - o2[0])
Arrays.sort(intervals, new Comparator<int[]>() {
public int compare(int[] interval1, int[] interval2) {
return interval1[0] - interval2[0]
}
})
ArrayList<int[]> res = new ArrayList<>()
for (int i = 0
int l = intervals[i][0]
int r = intervals[i][1]
int j = i + 1
if (res.size() == 0 || res.get(res.size() - 1)[1] < l) {
res.add(intervals[i])
} else {
res.get(res.size() - 1)[1] = Math.max(res.get(res.size() - 1)[1], intervals[i][1])
}
}
return res.toArray(new int[0][])
}
}
class Solution {
public int[][] merge(int[][] intervals) {
if (intervals.length == 0) {
return new int[0][2];
}
Arrays.sort(intervals, (o1, o2) -> o1[0] - o2[0]);
ArrayList<int[]> res = new ArrayList<>();
int j = 0;
for (int i = 0; i < intervals.length; ) {
j = i + 1;
res.add(intervals[i]);
while (j < intervals.length && intervals[j][0] <= intervals[i][1]) {
res.get(res.size() - 1)[1] = Math.max(res.get(res.size() - 1)[1], intervals[j][1]);
j++;
}
i = j;
}
return res.toArray(new int[0][]);
}
}