• leetcode Insert Interval 区间插入


    作者:jostree  转载请注明出处 http://www.cnblogs.com/jostree/p/4051169.html

    题目链接:leetcode Insert Interval

    使用模拟的方法,把需要插入的区间和每一个给定的区间进行比较,有三种情况:

    1.给定区间的起点小于要插入区间的终点,并且区间还未被查入过,那么插入区间。

    2.给定区间的终点大于要插入区间的起点,或者插入区间已经被插入过了,那么插入给定区间。

    3.不满足以上两种情况,说明给定区间与插入区间有交集,那么把需要插入的区间修改为其并集。

    代码中的标记位inserted,标记需要插入的区间是否被插入到了结果中。

    代码如下:

     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 public:
    12 vector<Interval> insert(vector<Interval> &intervals, Interval newInterval) 
    13 {
    14     vector<Interval> res;
    15     bool inserted = 0;
    16     for( int i = 0 ; i < intervals.size() ; i++ )
    17     {
    18         if( intervals[i].start > newInterval.end && inserted == 0 )
    19         {
    20             res.push_back(newInterval);
    21             res.push_back(intervals[i]);
    22             inserted = 1;
    23         }
    24         else if( intervals[i].end < newInterval.start || inserted== 1)
    25         {
    26             res.push_back(intervals[i]);
    27         }
    28         else
    29         {
    30             newInterval.start = min(newInterval.start, intervals[i].start);
    31             newInterval.end = max(newInterval.end, intervals[i].end);
    32         }
    33     }
    34     if( inserted == 0 )
    35     {
    36         res.push_back(newInterval);
    37     }
    38     return res;
    39 }
    40 
    41 };
    View Code
  • 相关阅读:
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    【转】idea 用maven骨架生成项目速度慢的问题
  • 原文地址:https://www.cnblogs.com/jostree/p/4051169.html
Copyright © 2020-2023  润新知