LeetCode: Insert Interval
来源:互联网 发布:vip后缀的域名 编辑:程序博客网 时间:2024/05/21 05:38
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<Interval> insert(vector<Interval> &intervals, Interval newInterval) { vector<Interval> result; if(intervals.size() == 0) { result.push_back(newInterval); return result; } for(int i = 0; i < intervals.size(); i++) { if(intervals[i].start > newInterval.start) { intervals.insert(intervals.begin() + i, newInterval); break; } else if(i == intervals.size()-1) { intervals.push_back(newInterval); break; } } result.push_back(intervals[0]); for(int i = 1; i < intervals.size(); i++) { if(result.back().end >= intervals[i].start) { result.back().end = std::max(result.back().end, intervals[i].end); } else { result.push_back(intervals[i]); } } return result; }};
Round 2:
/** * 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<Interval> insert(vector<Interval> &intervals, Interval newInterval) { int indexS = -1, indexE = -1; for(int i = 0; i < intervals.size(); i++) { if(newInterval.start >= intervals[i].start) { indexS = i; } if(newInterval.end >= intervals[i].start) indexE = i; } if(indexE == -1) intervals.insert(intervals.begin(), newInterval); else { if(indexS != -1) { if(intervals[indexS].end >= newInterval.start) { newInterval.start = intervals[indexS].start; } else indexS++; } else indexS = 0; newInterval.end = std::max(intervals[indexE].end, newInterval.end); if(indexS < indexE+1) intervals.erase(intervals.begin()+indexS, intervals.begin()+indexE+1); intervals.insert(intervals.begin()+indexS, newInterval); } return intervals; }};
0 0
- LeetCode: Insert Interval & Merge Interval
- LeetCode题目 Insert Interval
- LeetCode: Insert Interval
- LeetCode Insert Interval
- LeetCode: Insert Interval
- Leetcode: Insert Interval
- [LeetCode] Insert Interval
- LeetCode Insert Interval
- [LeetCode]Insert Interval
- leetcode insert interval
- [leetcode]Insert Interval
- LeetCode-Insert Interval
- [leetcode] Insert Interval
- LeetCode - Insert Interval
- 【leetcode】Insert Interval
- leetcode Insert Interval
- 【leetcode】Insert Interval
- LeetCode Insert Interval
- 用户注册策略研究
- 查看机器的基本信息
- springMVC3之ModelAndView对象
- Android自定义属性时format选项( <attr format="reference" name="background" /> )
- Java 一次性读取或写入文件内容
- LeetCode: Insert Interval
- Eclipse 更换主题
- MariaDB源码安装指南
- 使用gulp构建nodejs,你只需要记住5个函数
- JS+DIV 鼠标移动 DIV切换
- SQL server、mysql、oracle、db2、access 分页SQL大锦集
- Jquery<1>认识Jquery
- js判断是否为移动端
- 将博客搬至CSDN