-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathLeetCode#45.cc
38 lines (34 loc) · 1.11 KB
/
LeetCode#45.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/**
* 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(const Interval& a, const Interval& b){ return a.start<b.start;}
class Solution {
public:
vector<Interval> merge(vector<Interval> &intervals) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<Interval> ret;
int n = intervals.size();
if(n==0) return ret;
sort(intervals.begin(), intervals.end(),cmp);
int left = intervals[0].start;
int right = intervals[0].end;
for(int i=1;i<n;i++)
if(intervals[i].start <= right && right < intervals[i].end){
right = intervals[i].end;
}
else if(intervals[i].start > right){
ret.push_back(Interval(left,right));
left = intervals[i].start;
right = intervals[i].end;
}
ret.push_back(Interval(left,right));
return ret;
}
};