1 /** 2 * Definition for an interval. 3 * struct Interval { 4 * int start; 5 * int end; 6 * Interval() : start(0), end(0) {} 7 * Interval(int s, int e) : start(s), end(e) {} 8 * }; 9 */ 10 11 static int wing=[]() 12 { 13 std::ios::sync_with_stdio(false); 14 cin.tie(NULL); 15 return 0; 16 }(); 17 18 class Solution 19 { 20 public: 21 vector<Interval> merge(vector<Interval>& intervals) 22 { 23 vector<Interval> res; 24 if(intervals.empty()) 25 return res; 26 sort(intervals.begin(),intervals.end(),[](Interval a,Interval b){return a.start<b.start;}); 27 res.push_back(intervals[0]); 28 int sz=intervals.size(); 29 for(int i=1;i<sz;i++) 30 { 31 if(res.back().end<intervals[i].start) 32 res.push_back(intervals[i]); 33 else 34 res.back().end=max(res.back().end,intervals[i].end); 35 } 36 return res; 37 } 38 };
合并间隙,先排序,排序之后只用比较末尾值和当前扫描的元素开始值。