精華區beta Marginalman 關於我們 聯絡資訊
57. Insert interval 題目就是一堆數學的interval要插入一個新的 插入新的要把有重疊的合併 他原本就有排序了 策略就是沒有重疊就放進去 有重疊區間就變兩個合併在繼續迴圈 發現剩下的區間都跟前面合併的不重疊就把合併的放進去 然後再放剩下不重疊的 class Solution { public: vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newI nterval) { if (intervals.size() == 0) return {newInterval}; vector<vector<int>> ans; vector<int> insert_temp = newInterval; int push_insert_temp = 0; for (auto &interval:intervals){ if (interval[0] > insert_temp[1] || interval[1] < insert_temp[0]){ if (interval[0] > insert_temp[1] && !push_insert_temp){ ans.emplace_back(insert_temp); push_insert_temp = 1; } ans.emplace_back(interval); }else{ insert_temp[0] = min(interval[0], insert_temp[0]); insert_temp[1] = max(interval[1], insert_temp[1]); } } if (!push_insert_temp) ans.emplace_back(insert_temp); return ans; } }; ---- Sent from BePTT -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.174.118.18 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1673851787.A.298.html
pandix: 大師 01/16 15:04