题目
类型:Array
解题思路
对于区间S1=[l1,r1]和S2=[l2,r2],如果它们之间没有重叠,说明S1在S2左侧,此时r1<l2。或者S1在S2的右侧,此时l1>r2。
二者均不满足则代表S1和S2有交集,交集为 max(l1,l2),min(r1,r2),并集为min(l1,l2),max(r1,r2)

代码
class Solution {public int[][] insert(int[][] intervals, int[] newInterval) {int left = newInterval[0];int right = newInterval[1];boolean placed = false;List<int[]> ansList = new ArrayList<int[]>();for (int[] interval : intervals) {if (interval[0] > right) {// 在插入区间的右侧且无交集if (!placed) {ansList.add(new int[]{left, right});placed = true;}ansList.add(interval);} else if (interval[1] < left) {// 在插入区间的左侧且无交集ansList.add(interval);} else {// 与插入区间有交集,计算它们的并集left = Math.min(left, interval[0]);right = Math.max(right, interval[1]);}}if (!placed) {ansList.add(new int[]{left, right});}int[][] ans = new int[ansList.size()][2];for (int i = 0; i < ansList.size(); ++i) {ans[i] = ansList.get(i);}return ans;}}
