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].

#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;}}

原创粉丝点击