LeetCode 56. Insert Interval
来源:互联网 发布:怎么评价李白知乎 编辑:程序博客网 时间:2024/04/29 04:58
思路一:可以用LeetCode 55. Merge Intervals的方法,将输入合并,并返回。这样是排序的复杂度 —— O(nlogn)
思路二:遍历intervals, O(n)实现
只有当it->end<newInterval.start || it->start>newInterval.end时,才将*it压入返回值。其他情况当前线段都将有和newIntervals重叠的部分:
1. it->start<newInterval.start, *it后半部分与newInterval重叠,更新newInterval.start至it->start
2. it->end> newInterval.end, *it前半部分与newInterval重叠,更新newInterval.end至it->end
3. newInterval在*it之间,更新newInterval的两端。
4. *it在newInterval之间,不更新,跳过当前的*it.
最后再遍历一遍intervals, 将新的newInterval插入返回值中。
代码:
class Solution {public: vector<Interval> insert(vector<Interval> &intervals, Interval newInterval) { vector<Interval> ret; for (auto it = intervals.begin(); it != intervals.end(); ++ it) { if (it->end<newInterval.start || it->start>newInterval.end) { ret.push_back( *it ); } else if (it->start<newInterval.start && it->end>=newInterval.start && it->end<=newInterval.end) { newInterval.start = it->start; } else if (it->end>newInterval.end && it->start>=newInterval.start && it->start<=newInterval.end) { newInterval.end = it->end; } else if (it->start<=newInterval.start && it->end>=newInterval.end) { newInterval.start = it->start; newInterval.end = it->end; } } auto it = ret.begin(); for ( ; it != ret.end(); ++ it) { if (it->start > newInterval.end) { intervals.insert(it, newInterval); break; } } if (it == ret.end()) { ret.push_back( newInterval ); } return ret; }};
0 0
- LeetCode 56. Insert Interval
- LeetCode: Insert Interval & Merge Interval
- LeetCode 57. Insert Interval/56. Merge Intervals
- Leetcode 56. Merge Intervals & 57. Insert Interval
- leetcode 56. Merge Intervals 57. 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
- 基于matlab的音频波形实时采集显示 v0.1
- [JAVA] Java 中变量与常量的生命周期
- Xpath summary
- LeetCode 55. Merge Intervals
- 《国产嵌入式微系统msOS成型记》之一——何为嵌入式微系统
- LeetCode 56. Insert Interval
- 《国产嵌入式微系统msOS成型记》之二——中低端嵌入式软件平台的困局
- Remove Duplicates from Sorted Array
- 华为面试官提的一个题
- 《国产嵌入式微系统msOS成型记》之三——msOS的需求来源
- 给王菲写的第九首歌《黑客不死》
- js对象的特点
- 《国产嵌入式微系统msOS成型记》之四——嵌入式微系统msOS的诞生
- 《国产嵌入式微系统msOS成型记》之五——从嵌入式微系统的软件架构说起