15.3—细节实现题—Insert Interval
来源:互联网 发布:知乎 收入 安排 编辑:程序博客网 时间:2024/05/24 05:45
描述
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].
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].
#include<iostream>#include<vector>#include<map>using namespace std;vector<pair<int, int>>InsertInterval(vector<pair<int, int>> input, pair<int, int> data){vector<pair<int, int>> res;if (input.size() <= 0){res.push_back(data);return res;}//===int length = input.size();pair<int, int> insert;//===int i = 0;for (; i < length; i++){if (data.first < input[i].first){insert.first = data.first;break;}else if (input[i].first <= data.first&&data.first<=input[i].second){insert.first = input[i].first;break;}else if (input[i].second < data.first){res.push_back(input[i]);}}//===if (i >= length){res.push_back(data);return res;}//===int j = i;for (; j < length; j++){if (data.second < input[j].first){insert.second=data.second;res.push_back(insert);for (int k = j; k < length; k++){res.push_back(input[k]);}break;}else if (input[j].first <= data.second&&data.second <= input[j].second){insert.second = input[j].second;res.push_back(insert);for (int k = j+1; k < length; k++){res.push_back(input[k]);}break;}else if (data.second > input[length - 1].second){insert.second = data.second;res.push_back(insert);break;}}return res;}int main(){//===vector<pair<int, int>> input;input.push_back(make_pair(1, 2));input.push_back(make_pair(3, 5));input.push_back(make_pair(6, 7));input.push_back(make_pair(8, 10));input.push_back(make_pair(12, 16));//===pair<int, int>data = make_pair(4,15);//===vector<pair<int, int>>res = InsertInterval(input, data);for (int i = 0; i < res.size(); i++){cout << res[i].first << " " << res[i].second << endl;}}
阅读全文
0 0
- 15.3—细节实现题—Insert Interval
- leetcode——Insert Interval
- LeetCode57——Insert Interval
- 迭代器——insert-interval
- Algorithms—57.Insert Interval
- 15.3 Insert Interval
- leetcode 057 —— Insert Interval
- Hard 57题 Insert Interval
- 【leetcode】Array——Insert Interval(57)
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- F
- css代码实现鼠标手型等样式
- CSU 1211: 大整数开平方练习(二分)
- leetcode 62. Unique Paths
- spring boot gradle 构建添加外部 jar
- 15.3—细节实现题—Insert Interval
- fastDFS集群理解+搭建笔记
- 功能模块的验收测试
- HDU 6069 Counting Divisors(素数筛法+枚举+技巧)——2017 Multi-University Training Contest
- 15.4—细节实现题—Merge Intervals
- C++可变参数函数
- G
- 如果项目失败我们能收获什么?
- 15.5—细节实现题—Minimum Window Substring