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

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

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
ret;13 public:14 vector
insert(vector
&intervals, Interval newInterval) {15 // Start typing your C/C++ solution below16 // DO NOT write int main() function17 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 else36 {37 inserted = true;38 ret.push_back(newInterval);39 }40 }41 else42 {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 else49 ret.push_back(intervals[i]);50 i++;51 }52 else53 {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 else60 ret.push_back(newInterval);61 }62 else63 {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 else67 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 else80 ret.push_back(newInterval);81 }82 83 return ret; 84 }85 };

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

你可能感兴趣的文章
输入框状态禁止enter键提交表单
查看>>
Spring Boot Environment的初始化和预处理
查看>>
React-redux原理探索
查看>>
CSS解决无空格太长的字母,数字不会自动换行的问题
查看>>
jeesite快速开发平台(二)----环境搭建
查看>>
65.Express---express-session
查看>>
P4576 [CQOI2013]棋盘游戏
查看>>
bzoj4889: [Tjoi2017]不勤劳的图书管理员(树套树)
查看>>
静态库链接时的依赖关系和先后顺序
查看>>
jQuery页面元素操作之创建节点元素
查看>>
[HNOI2016]矿区
查看>>
[HEOI2013]SAO ——计数问题
查看>>
LeetCode 727. Minimum Window Subsequence
查看>>
栈三:栈的压入、弹出序列
查看>>
排序算法:七大排序算法的PHP实现
查看>>
【Perl】Path::File 目录的创建和删除
查看>>
加速cin的技巧
查看>>
HDU 6124 Euler theorem
查看>>
2017 ACM-ICPC 亚洲区(西安赛区)网络赛
查看>>
删除排序数组中的重复项的golang实现
查看>>