解題思路
先把 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;
}
};
沒有留言:
張貼留言