class Solution {
public int[][] merge(int[][] intervals) {
if (intervals.length == 1) return intervals;
Arrays.sort(intervals, (o1, o2) -> o1[0] - o2[0]);
LinkedList<LinkedList<Integer>> out = new LinkedList<>();
for (int i = 1, j = 0; i < intervals.length; ) {
int[] fir = intervals[j];
int[] sec = intervals[i];
if (fir[1] >= sec[0]) {
if (fir[1] >= sec[1]) {
intervals[i] = new int[] {fir[0], fir[1]};
}
else {
intervals[i] = new int[] {fir[0], sec[1]};
}
}
else {
LinkedList<Integer> tmp = new LinkedList<>();
tmp.add(fir[0]);
tmp.add(fir[1]);
out.add(tmp);
}
if (i == intervals.length - 1) {
LinkedList<Integer> tmp = new LinkedList<>();
tmp.add(intervals[i][0]);
tmp.add(intervals[i][1]);
out.add(tmp);
}
i ++;
j = i - 1;
}
int n = out.size();
int[][] ans = new int[n][2];
for (int i = 0; i < out.size(); i++) {
ans[i][0] = out.get(i).get(0);
ans[i][1] = out.get(i).get(1);
}
return ans;
}
}
07-27
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交