zoukankan      html  css  js  c++  java
  • [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].

     1 /**
     2  * Definition for an interval.
     3  * struct Interval {
     4  *     int start;
     5  *     int end;
     6  *     Interval() : start(0), end(0) {}
     7  *     Interval(int s, int e) : start(s), end(e) {}
     8  * };
     9  */
    10 class Solution {
    11 private:
    12     vector<Interval> ret;
    13 public:
    14     vector<Interval> insert(vector<Interval> &intervals, Interval newInterval) {
    15         // Start typing your C/C++ solution below
    16         // DO NOT write int main() function
    17         ret.clear();
    18         bool inserted = false;
    19         if (intervals.size() == 0)
    20         {
    21             inserted = true;
    22             ret.push_back(newInterval);
    23         }
    24 
    25         int i = 0;
    26         while (i < intervals.size())
    27         {
    28             if (ret.size() == 0)
    29             {
    30                 if (intervals[i].start < newInterval.start)
    31                 {
    32                     ret.push_back(intervals[i]);
    33                     i++;
    34                 }
    35                 else
    36                 {
    37                     inserted = true;
    38                     ret.push_back(newInterval);
    39                 }
    40             }
    41             else
    42             {
    43                 int size = ret.size();
    44                 if (inserted)
    45                 {
    46                     if (ret[size-1].start <= intervals[i].start && intervals[i].start <= ret[size-1].end)
    47                         ret[size-1].end = max(ret[size-1].end, intervals[i].end);
    48                     else
    49                         ret.push_back(intervals[i]);
    50                     i++;
    51                 }
    52                 else
    53                 {
    54                     if (newInterval.start < intervals[i].start)
    55                     {
    56                         inserted = true;
    57                         if (ret[size-1].start <= newInterval.start && newInterval.start <= ret[size-1].end)
    58                             ret[size-1].end = max(ret[size-1].end, newInterval.end);
    59                         else
    60                             ret.push_back(newInterval);
    61                     }
    62                     else
    63                     {
    64                         if (ret[size-1].start <= intervals[i].start && intervals[i].start <= ret[size-1].end)
    65                             ret[size-1].end = max(ret[size-1].end, intervals[i].end);
    66                         else
    67                             ret.push_back(intervals[i]);
    68                         i++;
    69                     }
    70                 }
    71             }
    72         }
    73             
    74         if (!inserted)
    75         {
    76             int size = ret.size();
    77             if (ret[size-1].start <= newInterval.start && newInterval.start <= ret[size-1].end)
    78                 ret[size-1].end = max(ret[size-1].end, newInterval.end);
    79             else
    80                 ret.push_back(newInterval);
    81         }
    82             
    83         return ret;           
    84     }
    85 };
  • 相关阅读:
    【Docker】(6)---Dockerfile文件
    【Docker】(5)---springCloud注册中心打包Docker镜像
    【Docker】(4)搭建私有镜像仓库
    【Docker】(3)---linux部署Docker及Docker常用命令
    【Docker】(2)---仓库、镜像、容器
    【Docker】(1)---Docker入门篇
    【Maven】---Nexus私服配置Setting和Pom
    【Maven】---Linux搭建Nexus3.X私服
    【Maven】---坐标与依赖
    go语言path包和filepath包的学习与使用
  • 原文地址:https://www.cnblogs.com/chkkch/p/2787407.html
Copyright © 2011-2022 走看看