题解 | 合并区间
/** * struct Interval { * int start; * int end; * Interval(int s, int e) : start(start), end(e) {} * }; */ #include <bits/stdc++.h> #include <vector> using namespace std; bool compare(Interval a, Interval b) { return a.start < b.start; } class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param intervals Interval类vector * @return Interval类vector */ vector<Interval> merge(vector<Interval>& intervals) { // write code here vector<Interval>a; if(intervals.size()==0)return intervals; sort(intervals.begin(), intervals.end(), compare); for (int i = 1; i < intervals.size(); i++) { if (intervals[i].start <= intervals[i - 1].end) { intervals[i].start = min(intervals[i - 1].start, intervals[i].start); intervals[i].end = max(intervals[i - 1].end, intervals[i].end); }else{ a.push_back(intervals[i-1]); } } a.push_back(intervals[intervals.size()-1]); return a; } };
经典的贪心思路,只需要排序后合并即可