[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 }

猜你喜欢

转载自www.cnblogs.com/liuliu5151/p/9820400.html