arr={[2,6],[3,8]} ret=6
arr={[0,8],[10,12]} ret=10
arr={[2,3]} ret=1
using namespace std;
typedef struct {
int begin;
int end;
}interval;
bool cmp(const interval &a,const interval &b)
{
if(a.begin==b.begin) //左区间相等,则比较右区间
return a.end<b.end;
return a.begin<b.begin; //比较左区间
}
int foo(vector<interval> &arr)
{
if(arr.empty())
return -1;
sort(arr.begin(),arr.end(),cmp);
int sum=arr[0].end-arr[0].begin;
int size=arr.size();
for(int i=1;i<size;++i){
if(arr[i-1].end>=arr[i].begin) //两区间有交集
sum+=arr[i].end-arr[i-1].end;
else //两区间无交集
sum+=arr[i].end-arr[i].begin;
}
return sum;
}