public int[][] merge(int[][] intervals) {
if (intervals.length == 0) return intervals;
Arrays.sort(intervals, (i1, i2)->(i1[0]-i2[0]));
List<int[]> resList = new ArrayList<>();
int[] prev = intervals[0];
for (int i = 1; i < intervals.length; i++) {
int[] curr = intervals[i];
if (prev[1] >= curr[0]) {
prev[1] = Math.max(prev[1], curr[1]);
} else {
resList.add(prev);
prev = curr;
}
}
resList.add(prev);
return resList.toArray(new int[resList.size()][2]);
}
public int[][] merge(int[][] intervals) {
if (intervals.length == 0) return intervals;
int m = intervals.length;
int n = intervals[0].length;
Arrays.sort(intervals, (i1, i2)->(i1[0] - i2[0]));
Deque<int[]> res = new ArrayDeque<>();
res.add(intervals[0]);
for (int[] interval : intervals) {
int val = res.getLast()[1];
if (val < interval[0]) {
res.add(interval);
} else {
res.getLast()[1] = Math.max(val, interval[1]);
}
}
return res.toArray(new int[res.size()][]);
}
public int[][] merge(int[][] intervals) {
int n = intervals.length;
if (n < 1) return intervals;
Arrays.sort(intervals, (int[] i1, int[] i2)->( i1[0] - i2[0]));
Deque<int[]> queue = new ArrayDeque<>();
queue.offer(intervals[0]);
for (int i = 1; i < n; i++) {
int[] tmp = intervals[i];
int[] last = queue.peekLast();
if (last[1] >= tmp[0]) {
last[1] = Math.max(last[1], tmp[1]);
}
else {
queue.offer(tmp);
}
}
return queue.toArray(new int[queue.size()][]);
}
56. Merge Intervals 56. 合并区间
最新推荐文章于 2020-09-30 09:35:47 发布