解題思路
先把 interval 給 sort 過一次,確保數字至少是遞增上去的。
接下來 traverse 每一個 element,因為新 element 只可能跟上一個 overlap,或乾脆就在上一個右邊,因此依照情況決定是要 merge 還是 push_back 就好。
比 57. Insert Interval 簡單很多。
程式碼
class Solution { public: vector<vector<int>> merge(vector<vector<int>>& intervals) { sort(intervals.begin(), intervals.end()); vector<vector<int>> ans; ans.push_back(intervals[0]); for(int i=1; i<intervals.size(); i++) { if(ans.back()[1] >= intervals[i][0]) // merge { ans.back()[0] = min(ans.back()[0], intervals[i][0]); ans.back()[1] = max(ans.back()[1], intervals[i][1]); } else ans.push_back(intervals[i]); } return ans; } };
沒有留言:
張貼留言