分三种情况讨论:
- 插入数组在数组左边,直接插入,原来数组的内容依次放入ans
- 插入数组在数组右边,数组输入ans,新数组继续和下一个数组比较
- 插入数组和数组重合,合并为新数组,继续和下一个数组比较
class Solution {public int[][] insert(int[][] intervals, int[] newInterval) {List<int[]> ans = new ArrayList<>();int nl = newInterval[0], nr = newInterval[1];int i;boolean isInserted = false;for (i = 0; i < intervals.length; ++i) {int l = intervals[i][0], r = intervals[i][1];if (nr < l) {ans.add(new int[] {nl, nr});isInserted = true;break;} else if (nl > r) {ans.add(intervals[i]);} else {nl = Math.min(l, nl);nr = Math.max(r, nr);}}if (isInserted) {for (int j = i; j < intervals.length; ++j) {ans.add(intervals[j]);}} else {ans.add(new int[] {nl, nr});}return ans.toArray(new int[ans.size()][]);}
}