LeetCode-057-插入?yún)^(qū)間

題目描述:給你一個 無重疊的 ,按照區(qū)間起始端點排序的區(qū)間列表。
在列表中插入一個新的區(qū)間,你需要確保列表中的區(qū)間仍然有序且不重疊(如果有必要的話,可以合并區(qū)間)。
來源:力扣(LeetCode) ??
鏈接:https://leetcode-cn.com/problems/insert-interval/ ??
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
解法一:遍歷數(shù)組
首先如果intervals為空,因為不需要處理合并,所以直接返回一個區(qū)間newInterval;
如果intervals不為空,聲明1個變量length記錄intervals的區(qū)間數(shù),然后分以下幾種情況進行處理:
curFirst和curSecond為當前區(qū)間的2個數(shù),用matchFirst、matchSecond、curFirst、curSecond判斷2個區(qū)間是否相交,如果相交,則更新matchFirst和matchSecond的值,并且將當前區(qū)間的標識更新為已合并。
如果新區(qū)間newInterval的最大值小于intervals所有區(qū)間的最小值,則不需要合并,將新區(qū)間放在intervals的最前面,然后返回;
如果新區(qū)間newInterval的最小值大于intervals所有區(qū)間的最大值,則不需要合并,將新區(qū)間放在intervals的最后面,然后返回;
如果前面兩種情況不存在,則用matchFirst和matchSecond記錄newInterval的2個數(shù),newLength為新區(qū)間的數(shù)量初始為length+1,用一個boolean數(shù)組flag記錄intervals有哪些區(qū)間被合并,然后遍歷intervals的所有區(qū)間:
遍歷完成后,初始化一個新的區(qū)間數(shù)組newIntervals,將新區(qū)間
{matchFirst, matchSecond}
和intervals放入newIntervals中沒有被合并的區(qū)間放入newIntervals中(需要判斷將新區(qū)間放在合適的位置),然后返回newIntervals。
【每日寄語】 今天也是值得你用可愛和溫柔去對待的一天呀。