算法
- 思考方式:线段贪心
- 代码实现:排序
- 『我落在你落在的区间,那我们是不是可以合并』
/**
* Definition for an interval.
* struct Interval {
* int start;
* int end;
* Interval() : start(0), end(0) {}
* Interval(int s, int e) : start(s), end(e) {}
* };
*/
bool cmp( Interval a, Interval b )
{
if( a.start!=b.start )
{
return a.start<b.start;
}
else
{
return a.end<b.end;
}
}
class Solution {
public:
vector<Interval> merge(vector<Interval> &intervals) {
int Len=intervals.size();
if( 0==Len || 1==Len ) return intervals;
vector<Interval> res;
sort( intervals.begin(), intervals.end(), cmp );
Interval Last=intervals[0];
Interval cur;
for(int i=0; i<Len; ++i)
{
Interval cur=intervals[i];
if( cur.start>=Last.start && cur.start<=Last.end )
{
//Last的start不变
Last.end= max( Last.end , cur.end );
}
else
{
res.push_back(Last);
Last=cur;
}
}
//擦屁股
res.push_back( Last );
return res;
}
};