题解 | #合并区间#
合并区间
https://www.nowcoder.com/practice/69f4e5b7ad284a478777cb2a17fb5e6a
/** * Definition for an interval. * struct Interval { * int start; * int end; * Interval() : start(0), end(0) {} * Interval(int s, int e) : start(s), end(e) {} * }; */ class Solution { public: static bool cmp(Interval a, Interval b){ if(a.start == b.start) return a.end < b.end; else return a.start < b.start; } vector<Interval> merge(vector<Interval>& intervals) { sort(intervals.begin(), intervals.end(), cmp); if(intervals.size() == 0)return intervals; vector<Interval> res; int first = intervals[0].start, second = intervals[0].end; for (int i = 1; i < intervals.size(); i++) { if (intervals[i].start <= second) { second = max(second, intervals[i].end); } else { Interval temp; temp.start = first; temp.end = second; res.push_back(temp); first = intervals[i].start; second = intervals[i].end; } } Interval temp; temp.start = first; temp.end = second; res.push_back(temp); return res; } };