close

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]);
    }
}

arrow
arrow
    全站熱搜

    程式小試身手 發表在 痞客邦 留言(0) 人氣()