1 题目
image.png
2 Java代码
class Solution {
public int[][] insert(int[][] intervals, int[] newInterval) {
Arrays.sort(intervals, new Comparator() {
@Override
public int compare(int[] o1, int[] o2) {
if (o1[0] < o2[0])
return -1;
else if (o1[0] > o2[0])
return 1;
else
return 0;
}
});
// 排序好了的区间
// 技巧当不确定数组的长度的时候,可以首先用列表进行替代
List ans = new ArrayList<>();
int length = intervals.length;
/*for (int i = 0; i < length; i++) {
}*/
int currIndex = 0;
while (currIndex < length && intervals[currIndex][1] < newInterval[0]) {
ans.add(intervals[currIndex++]);
}
/* if (currIndex == length) {
ans.add(newInterval);
return (int[][]) ans.toArray();
}
*/
while (currIndex < length && newInterval[1] >= intervals[currIndex][0]) {
newInterval[0] = Math.min(newInterval[0], intervals[currIndex][0]);
newInterval[1] = Math.max(newInterval[1], intervals[currIndex][1]);
currIndex++;
}
ans.add(newInterval);
while (currIndex < length) {
ans.add(intervals[currIndex++]);
}
int[][] res = new int[][]{};
return ans.toArray(res);
}
}
3 学习点
1 将int[]存储在List里面
2 记住Java泛型的类型擦除
这样的写法
int[][] res = new int[][]{};
return ans.toArray(res);