Android技術篇!2021Android不死我不倒,全網首發!
阿新 • • 發佈:2021-08-20
粗暴方法,先把所有區間按照左邊界的大小排序,然後在一個個遍歷,如果有重疊部分的就重疊起來,如果沒有的就將維護的res-temp變數加入結果陣列中,最費勁的是兩個區間之間的關係沒有搞清楚,花了一些時間,貼程式碼。
1 bool cmp(vector<int>& a,vector<int>& b) 2 { 3 return a[0]<b[0]; 4 } 5 class Solution { 6 public: 7 vector<vector<int>> merge(vector<vector<int>>& intervals) 8 { 9 sort(intervals.begin(),intervals.end(),cmp); 10 vector<vector<int>> res; 11 vector<int> res_temp = intervals[0]; 12 for(auto inter_temp:intervals) 13 { 14 if(inter_temp[0]<=res_temp[1] && inter_temp[1]>res_temp[1]) 15 { 16 res_temp[1] = inter_temp[1]; 17 } 18 else if(res_temp[1]<inter_temp[0]) 19 { 20 res.push_back(res_temp); 21 res_temp = inter_temp; 22 } 23 } 24 res.push_back(res_temp);25 return res; 26 } 27 };
沒想到我這土方法也能叫雙指標,牛。