[OJ] Insert Interval
2016-01-06 23:05
190 查看
LintCode #30. Insert Interval (Easy)
LeetCode #57. Insert Interval (Hard)
思路:
第一个
中间一段计算相交区间.
最后一个
时间复杂度:
空间复杂度:
参照九章算法的JAVA解法改写的C++版.
这算法简洁在于: 一个循环, 通过两个
唯一欠缺的地方在于插入操作会有额外的时间开销.
LeetCode #57. Insert Interval (Hard)
class Solution { public: vector<Interval> insert(vector<Interval> &intervals, Interval newInterval) { vector<Interval> v; auto it = intervals.begin(); while (it != intervals.end() && it->end < newInterval.start) { v.push_back(*it); ++it; } auto left = it; while (it != intervals.end() && it->start <= newInterval.end) ++it; auto right = it; if (right - left != 0) { v.push_back(Interval(min(left->start, newInterval.start), max((right - 1)->end, newInterval.end))); } else { v.push_back(newInterval); } while (it != intervals.end()) { v.push_back(*it); ++it; } return v; } };
思路:
第一个
while循环跳过所有不会与
newInterval相交且小于
newInterval的区间.
中间一段计算相交区间.
最后一个
while循环跳过所有不会与
newInterval相交且大于
newInterval的区间.
时间复杂度:
O(n)
空间复杂度:
O(n)
参照九章算法的JAVA解法改写的C++版.
class Solution { public: vector<Interval> insert(vector<Interval> &intervals, Interval newInterval) { vector<Interval> v; int pos = 0; for (auto interval : intervals) { if (interval.end < newInterval.start) { v.push_back(interval); ++pos; } else if (interval.start > newInterval.end) { v.push_back(interval); } else { newInterval.start = min(newInterval.start, interval.start); newInterval.end = max(newInterval.end, interval.end); } } v.insert(v.begin() + pos, newInterval); return v; } };
这算法简洁在于: 一个循环, 通过两个
if滤掉所有不相交的区间; (若有)剩下的区间一定与
newInterval相交, 将这些区间合并到
newInterval里, 最后插入即可.
唯一欠缺的地方在于插入操作会有额外的时间开销.
相关文章推荐
- 14-mysql优化之使用存储过程向mysql数据库中添加4000000条数据
- JavaScript 操作 Cookie
- Iteration Vs Recursion Java
- 大数据系列第五课:scala基础
- 知识累积——这些年写过的博文
- MATLAB画图
- JAVA之Switch语句
- #ifdef DEBUG的理解
- [Andrid转]新版安卓SDK文件activity_main.xml和fragment_main.xml的处理
- Android 布局分析
- 每天学点儿技术之写得又快又好的秘密
- 做好自己,拥抱世界
- Android 通过串口模拟 模拟物理按键
- Android的SharedPreferences存储
- android camera:输出数据流和裁剪
- android动画的ZAdjustment
- echarts水印
- caffe blob
- 宏定义中#和##符号的使用和宏定义展开问题
- hdu 5514 Frog(容斥原理)