早上起来突然就想通了,昨晚一开始是分情况讨论,把情况分的很细,主要是处理++i和++j的情况。
发现太多情况了,于是想着把两个合并,然后一遍遍历。
早上起来突然想到,把合并和i、j的递增分开处理
class Solution {
public:
vector<vector<int>> intervalIntersection(vector<vector<int>>& firstList, vector<vector<int>>& secondList) {
int len_f=firstList.size(),len_s=secondList.size();
if(!len_f||!len_s)
return {
};
vector<vector<int>> res;
int i=0,j=0;
while((i<len_f)&&(j<len_s))
{
//这里写的太繁琐了,不是好代码,应该把内容提取出来
/*
int first=max(firstList[i][0],secondList[j][0]),second=min(firstList[i][1],secondList[j][1]);
if(first<=second)
res.push_back({first,second});
*/
if(!(firstList[i][1]<secondList[j][0])&&!(firstList[i][0]>secondList[j][1]))
res.push_back({
max(firstList[i][0],secondList[j][0]),min(firstList[i][1],secondList[j][1])});
if(firstList[i][1]<secondList[j][1])
++i;
else
++j;
}
return res;
}
};