题目:
分析:
不难。只是要考虑的情况比较多。容易遗漏。
代码:
class Solution {
public:
vector<vector<int>> insert(vector<vector<int>>& in, vector<int>& newin) {
if(in.size()==0){
in.push_back(newin);
return in;
}
vector<int> a(2,0);
vector<vector<int> > A;
if(newin[1]<in[0][0]) {
A.push_back(newin);
for(int i=0;i<in.size();i++) A.push_back(in[i]);
return A;
}
int i=0;
for(;i<in.size();i++)
{
if(in[i][1]<newin[0]) A.push_back(in[i]);
else break;
}
cout<<i;
//直接添加到最后的情况。
if(i==in.size())
{
A.push_back(newin);
return A;
}
if(newin[1]<in[i][0])
{
A.push_back(newin);
for(;i<in.size();i++) A.push_back(in[i]);
return A;
}
if(i+1==in.size()||newin[1]>=in[in.size()-1][0])
{
a[0]=min(in[i][0],newin[0]);
a[1]=max(in[in.size()-1][1],newin[1]);
A.push_back(a);
return A;
}
cout<<i;
a[0]=min(in[i][0],newin[0]);
for(;i<in.size();i++)
{
if(in[i+1][0]>newin[1]) break;
}
a[1]=max(newin[1],in[i][1]);
A.push_back(a);
for(i++;i<in.size();i++)
{
A.push_back(in[i]);
}
return A;
}
};