博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode_question_57 Insert Interval
阅读量:6083 次
发布时间:2019-06-20

本文共 2734 字,大约阅读时间需要 9 分钟。

 

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].

 

/** * Definition for an interval. * struct Interval { *     int start; *     int end; *     Interval() : start(0), end(0) {} *     Interval(int s, int e) : start(s), end(e) {} * }; */class Solution {public:    vector
insert(vector
&intervals, Interval newInterval) { // Start typing your C/C++ solution below // DO NOT write int main() function vector
::iterator itstart=intervals.begin(); for(; itstart!=intervals.end(); ++itstart) if((*itstart).start <= newInterval.start && newInterval.start <= (*itstart).end) break; vector
::iterator itend=intervals.begin(); for(; itend!=intervals.end(); ++itend) if((*itend).start <= newInterval.end && newInterval.end <= (*itend).end) break; if(itstart!=intervals.end() && itend!=intervals.end()) { if(itstart != itend) { (*itstart).end = (*itend).end; int tmp = (*itstart).end; itstart++; while(itstart != intervals.end()) if((*itstart).start <= tmp) itstart = intervals.erase(itstart); else break; } return intervals; }else if(itstart==intervals.end() && itend!=intervals.end()) { (*itend).start = newInterval.start; int tmp1 = (*itend).start; int tmp2 = (*itend).end; itstart = intervals.begin(); while((*itstart).start != tmp1 && (*itstart).end != tmp2) if((*itstart).start >= tmp1 && (*itstart).end <= tmp2) itstart = intervals.erase(itstart); else ++itstart; return intervals; }else if(itstart!=intervals.end() && itend==intervals.end()) { (*itstart).end = newInterval.end; int tmp = newInterval.end; ++itstart; while(itstart != intervals.end()) if((*itstart).start < tmp) itstart = intervals.erase(itstart); else break; return intervals; }else{ vector
::iterator it=intervals.begin(); for(; it!=intervals.end(); ++it) if((*it).start > newInterval.start) break; //--it; vector
::iterator it1 = intervals.insert(it,newInterval); while(it1 != intervals.end()) { if((*it1).end < newInterval.end) it1 = intervals.erase(it1); else it1++; } return intervals; } }};

 

 

转载地址:http://vtkwa.baihongyu.com/

你可能感兴趣的文章
home.php
查看>>
neo4j---删除关系和节点
查看>>
redis分布式锁redisson
查看>>
什么样的企业可以称之为初创企业?
查看>>
Python爬虫之BeautifulSoup
查看>>
《HTML 5与CSS 3权威指南(第3版·下册)》——第20章 使用选择器在页面中插入内容...
查看>>
如何判断自己适不适合做程序员?这几个特点了解一下
查看>>
newinstance()和new有什么区别
查看>>
android下载封装类
查看>>
[node] 用 node-webkit 开发桌面应用
查看>>
Nginx访问控制和虚拟主机
查看>>
report widget not working for external users
查看>>
windows phone 摄像头得到图片是旋转90°
查看>>
Linux--sed使用
查看>>
没有显示器的情况下安装和使用树莓派
查看>>
Q85 最大矩形
查看>>
【android】使用handler更新UI
查看>>
mochiweb 源码阅读(十五)
查看>>
前端面试中的常见的算法问题
查看>>
计算机语言的基本理论
查看>>