1. 程式人生 > >[leetcode]57. Insert Interval插入區間

[leetcode]57. 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:

Input: intervals = [[1,3],[6,9]], newInterval = [2,5]
Output: [[1,5],[6,9]]

 

題目

給定一堆區間,插入一個新區間。

 

思路

 

程式碼

 1 class Solution {
 2     public List<Interval> insert(List<Interval> intervals, Interval newInterval) {
 3          List<Interval> result = new ArrayList<Interval>();
 4         for (Interval i : intervals) {
 5             //
non-overlapping | i |--|newInterval| 6 if (newInterval == null || i.end < newInterval.start){ 7 result.add(i); 8 } 9 //non-overlapping |newInterval|--| i | 10 else if (i.start > newInterval.end) { 11 result.add(newInterval);
12 result.add(i); 13 newInterval = null;// guarantee not entring if (newInterval != null) 14 } 15 // overlapping, update start and end 16 else { 17 newInterval.start = Math.min(newInterval.start, i.start); 18 newInterval.end = Math.max(newInterval.end, i.end); 19 } 20 } 21 if (newInterval != null) 22 result.add(newInterval); 23 return result; 24 } 25 }