class Solution {
public int[][] insert(int[][] intervals, int[] newInterval) {
List<int[]> ans = new ArrayList<>();
int[] toAdd = newInterval;
/* [[1,3],[6,9]]->[2,5] */
for (int i = 0; i < intervals.length; i ++) {
/*1. No overlap and toAdd appears before current interval, add toAdd to result.*/
if (intervals[i][0] > toAdd[1]) {//1>5,6>5,1>3,6>3
ans.add(toAdd);//[2,5],[1,3]
toAdd = intervals[i];//[1,3],[6,9]
}
/*2. Has overlap, update the toAdd to the merged interval.*/
else if (intervals[i][1] >= toAdd[0])
toAdd = new int[] {Math.min(intervals[i][0], toAdd[0]), Math.max(intervals[i][1], toAdd[1]) };
/*3. No overlap and toAdd appears after current interval, add current interval to result.*/
else ans.add(intervals[i]);
}
ans.add(toAdd);
return ans.toArray(new int[ans.size()][2]);
}
}
- Mar 11 Fri 2022 12:34
【LeetCode】Insert Interval
close
全站熱搜
留言列表