# （笔试题）区间最大重叠

## 题目：

```struct Interval{
int start;
int end;
};```

如果y2>=y1，

## 代码：

```#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

struct Interval{
int start;
int end;
};

bool cmp(const Interval &a,const Interval &b){
return a.start<b.start;
}

int longestOverlap(vector<Interval> &inters, int n){
sort(inters.begin(),inters.end(),cmp);
for(int i=0;i<n;i++){
cout<<inters[i].start<<" "<<inters[i].end<<endl;
}
int maxOverlap=0;
Interval pre;
Interval cur;
pre=inters[0];
int len;
for(int i=1;i<n;i++){
cur=inters[i];
if(cur.end>=pre.end){
len=max(pre.end-cur.start+1,0);
maxOverlap=max(maxOverlap,len);
pre=cur;
}
else
maxOverlap=max(maxOverlap,cur.end-cur.start+1);
}
return maxOverlap;
}

int main()
{
int n;
while(1){
cin>>n;
vector<Interval> inters(n);
for(int i=0;i<n;i++){
cin>>inters[i].start>>inters[i].end;
}
cout<<longestOverlap(inters,n)<<endl;
}

return 0;
}```

原文作者：AndyJee
原文地址: https://www.cnblogs.com/AndyJee/p/4732068.html
本文转自网络文章，转载此文章仅为分享知识，如有侵权，请联系博主进行删除。