Leetcode: Insert Interval
来源:互联网 发布:淘宝如何营销 编辑:程序博客网 时间:2024/05/22 02: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]
.
需要细心,虽然不难。用一个辅助数组会简单些,二分查找也增加了点难度。
/** * 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 mid, low = 0, up = intervals.size() - 1; while (low <= up) { mid = (low + up) / 2; if (intervals[mid].start < newInterval.start) { low = mid + 1; } else if (intervals[mid].start > newInterval.start) { up = mid - 1; } else { low = mid + 1; break; } } // low points to the inserted position --low; if (low < 0) { intervals.insert(intervals.begin(), newInterval); low = 0; } else { if (intervals[low].end < newInterval.start) { ++low; intervals.insert(intervals.begin() + low, newInterval); } else { intervals[low].end = max(intervals[low].end, newInterval.end); } } int i = low + 1; for (; i < intervals.size(); ++i) { if (intervals[low].end < intervals[i].start) { break; } } intervals[low].end = max(intervals[low].end, intervals[i-1].end); if (i > low + 1) { intervals.erase(intervals.begin() + low + 1, intervals.begin() + i); } 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
- 开源编译器学习笔记05(VC6 语法分析器——见面语法树状态机)——2014_2_1
- 类和对象部分练习
- 利用q解决嵌套回调的问题
- UVa 10106 乘积
- JQuery中常用方法备忘
- Leetcode: Insert Interval
- Windows 8.1 IE11 打不开 无法启动 解决方法
- 《浅谈用极大化思想解决最大子矩形问题》
- 动态规划4:最大子段和问题到最大子矩阵问题(四):最大子矩阵面积问题
- C/C++ 程序的入口选择
- Oracle学习笔记(2)—— 解锁用户 unlock user
- 三维向量叉乘推导
- Codeforces 387C George and Number(贪心)
- Android控件之Button