Leetcode: Insert Interval

Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessary).

You may assume that the intervals were initially sorted according to their start times.

Example 1:
Given intervals [1,3],[6,9], insert and merge [2,5] in as [1,5],[6,9].

Example 2:
Given [1,2],[3,5],[6,7],[8,10],[12,16], insert and merge [4,9] in as [1,2],[3,10],[12,16].

This is because the new interval [4,9] overlaps with [3,5],[6,7],[8,10].

public ArrayList<Interval> insert(ArrayList<Interval> intervals, Interval newInterval) {
        // Start typing your Java solution below
        // DO NOT write main() function
        ArrayList<Interval> output = new ArrayList<Interval>();
        if(intervals==null||intervals.size()==0){
            output.add(newInterval);
            return output;
        }
        int index =0;
        for(int i=0;i<intervals.size();i++){
            Interval curr = intervals.get(i);
            if(curr.end<newInterval.start){
                output.add(curr);
                index++;
            }else if(newInterval.end<curr.start){
                output.add(curr);
            }else{
                newInterval = new Interval(Math.min(newInterval.start, curr.start),
                                               Math.max(newInterval.end, curr.end));
            }
        }

        output.add(index,newInterval);
        return output;
    }
FacebookTwitterGoogle+Share

Leave a Reply

Your email address will not be published. Required fields are marked *