Insert Interval
// case 1: add org
// org: ----
// new: ==
// case 2: add new, add org
// org: ----
// new: ==
// case 3: add nothing, revise new
// org: -------...
// new: =====...
// key point: use newInterval to cover original interval, modify the new interval
public List<Interval> insert(List<Interval> intervals, Interval newI) {
List<Interval> res = new ArrayList<>();
for(Interval i: intervals) {
if(newI==null || i.end < newI.start) { //newInterval has been merged or newInteval is not come yet
res.add(i);
}else if(newI.end<i.start){//newInterval should be added, current interval should be add
res.add(newI);
newI = null;
res.add(i);
}else { // newInterval is not end yet, keep searching next
newI.start = Math.min(newI.start, i.start);
newI.end = Math.max(newI.end,i.end);
}
}
if(newI!=null) res.add(newI);
return res;
}Similar Question: Merge Intervals (LC 56)
Last updated