• Insert Intervals


    Given a non-overlapping interval list which is sorted by start point.

    Insert a new interval into it, make sure the list is still in order and non-overlapping (merge intervals if necessary).

    Example

    Insert [2, 5] into [[1,2], [5,9]], we get [[1,9]].

    Insert [3, 4] into [[1,2], [5,9]], we get [[1,2], [3,4], [5,9]].

    Analyse: There are three possibilities for the newInterval and currentInterval: newInterval.end < currentInterval.start, newInterval.start > currentInterval.end, and newInterval and currentInterval intersects. 

    Runtime: 24ms

     1 /**
     2  * Definition of Interval:
     3  * class Interval {
     4  * public:
     5  *     int start, end;
     6  *     Interval(int start, int end) {
     7  *         this->start = start;
     8  *         this->end = end;
     9  *     }
    10  * }
    11  */
    12 class Solution {
    13 public:
    14     /**
    15      * Insert newInterval into intervals.
    16      * @param intervals: Sorted interval list.
    17      * @param newInterval: new interval.
    18      * @return: A new interval list.
    19      */
    20     vector<Interval> insert(vector<Interval> &intervals, Interval newInterval) {
    21         // write your code here
    22         vector<Interval> result;
    23         Interval pre = newInterval;
    24         for (int i = 0; i < intervals.size(); i++) {
    25             if (pre.end < intervals[i].start) {
    26                 result.push_back(pre);
    27                 pre = intervals[i];
    28             }
    29             else if (pre.start > intervals[i].end) {
    30                 result.push_back(intervals[i]);
    31             }
    32             else {
    33                 pre.start = min(pre.start, intervals[i].start);
    34                 pre.end = max(pre.end, intervals[i].end);
    35             }
    36         }
    37         result.push_back(pre);
    38         return result;
    39     }
    40 };
  • 相关阅读:
    礼物的最大价值
    复杂链表的复制
    全排列(回溯法)
    删除排序数组中的重复项
    三角形最小路径和(经典dp)
    链表中倒数第k个节点
    造成segment fault,产生core dump的可能原因
    wmpnetwk.exe怎么禁启动
    GSM/GPRS/EDGE/WCDMA/HSDPA/HSUPA--辨析
    OSI七层参考模型每一层都有哪些协议
  • 原文地址:https://www.cnblogs.com/amazingzoe/p/5851668.html
Copyright © 2020-2023  润新知