Insert Interval

 struct Interval{
          int start;
          int end;
          Interval() :start(0), end(0){}
          Interval(int s, int e) :start(s), end(e){}
      };

      vector<Interval> insert(vector<Interval> &intervals, Interval newInterval)
      {
          //关键是搞清不同元素之间是否有重叠
          vector<Interval>::iterator it = intervals.begin();
          while (it != intervals.end())
          {
              if (newInterval.end > it->start)
              {
                  intervals.insert(it, newInterval);
                  return intervals;
              }
              else if (it->end > newInterval.start)
              {
                  it++;
                  continue;
              }
              else
              {
                  newInterval.start = min(it->start, newInterval.start);
                  newInterval.end = min(it->end, newInterval.end);
              }
          }
          //如果将最后一个元素归并了
          intervals.insert(intervals.end(), newInterval);
          return intervals;
      }
View Code
原文地址:https://www.cnblogs.com/573177885qq/p/5729183.html