#include using namespace std; class Solution { public: vector> insert(vector>& intervals, vector& newInterval) { if (intervals.empty()) return {newInterval}; vector> result; if (newInterval[1] < intervals.front()[0]) { result.emplace_back(newInterval); } for (int i = 0; i < intervals.size(); i++) { // new interval 與 intervals[i] 有交集 if ((intervals[i][0] <= newInterval[0] && newInterval[0] <= intervals[i][1]) || (newInterval[0] <= intervals[i][0] && intervals[i][0] <= newInterval[1])) { vector intervalToPush(intervals[i]); intervalToPush[0] = min(newInterval[0], intervalToPush[0]); for (; i < intervals.size(); i++) { if (newInterval[1] < intervals[i][0]) break; intervalToPush[1] = max(newInterval[1], intervals[i][1]); } result.emplace_back(intervalToPush); i--; } else { result.emplace_back(intervals[i]); // new interval 跟前後兩個 intervals[i], intervals[i + 1] 沒有交集 if (intervals[i][1] < newInterval[0] && (i == intervals.size() - 1 || newInterval[1] < intervals[i + 1][0])) { result.emplace_back(newInterval); } } } return result; } };