//对数组进行排序 Arrays.sort(intervals, (a, b) -> { if (a[0] == b[0]) return b[1] - a[1]; return a[0] - b[0]; });
//将排序后数组中的第一个元素加入结果链表中 Deque<int[]> list = new LinkedList<>(); int left = intervals[0][0]; int right = intervals[0][1]; list.add(newint[]{left, right});
for (int i = 1; i < intervals.length; i++) { int[] temp = intervals[i]; //如果两个区间不相交,直接添加新区间即可 if (temp[0] > right) { left = temp[0]; right = temp[1]; list.add(newint[]{left, right}); } else { //如果两个区间相交,找出最大的右边界 int[] curr = list.removeLast(); right = Math.max(curr[1], temp[1]); curr[1] = right; list.add(curr); } } return list.toArray(newint[list.size()][]); } }