Leetcode 57. Insert Interval
题目链接: Insert Interval
难度:Medium
题目大意:
有若干个互不重叠的区间,这些区间已经按左值从小到大排列好,再输入一个新的区间,将这个新区间与原来的若干个区间进行合并。
思路:
参考高赞回答。对原有的若干个区间进行遍历,将每个区间与新区间进行比较,分情况讨论。
代码
class Solution {
public int[][] insert(int[][] intervals, int[] newInterval) {
List<int[]> ans=new ArrayList<>();
int[] toAdd=newInterval;
for(int i=0;i<intervals.length;i++){
if(intervals[i][0]>toAdd[1]){
ans.add(toAdd);
toAdd=intervals[i];
}
else if(intervals[i][1]>=toAdd[0]){
toAdd=new int[]{Math.min(intervals[i][0],toAdd[0]),Math.max(intervals[i][1],toAdd[1])};
}
else{
ans.add(intervals[i]);
}
}
ans.add(toAdd);
return ans.toArray(new int[ans.size()][2]);
}
}