題目連結:
題目意譯:
給定一個不重疊的區間之集合 intervals,插入一個新的區間進入 intervals(如果需要的話請合併區間)。
你可以假設 intervals 一開始以它們的開始時間之順序排序。
限制:
0 ≦ intervals.length ≦ 10 ^ 4
intervals[i].length == 2
0 ≦ intervals[i][0] ≦ intervals[i][1] ≦ 10 ^ 5
intervals 按照 intervals[i][0] 之升序排序。
newInterval.length == 2
0 ≦ newInterval[0] ≦ newInterval[1] ≦ 10 ^ 5
範例測資:
範例 1:
輸入: intervals = [[1,3],[6,9]], newInterval = [2,5]
輸出: [[1,5],[6,9]]
範例 2:
輸入: intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]
輸出: [[1,2],[3,10],[12,16]]
解釋: 因為新區間 [4,8] 與 [3,5] 、 [6,7] 、 [8,10] 重疊。
範例 3:
輸入: intervals = [], newInterval = [5,7]
輸出: [[5,7]]
範例 4:
輸入: intervals = [[1,5]], newInterval = [2,3]
輸出: [[1,5]]
範例 5:
輸入: intervals = [[1,5]], newInterval = [2,7]
輸出: [[1,7]]
解題思維:
將 newInterval 插入到合適的位置使得 intervals 維持著按照 intervals[i][0] 升序排序的特性之後,按照
這題的策略合併區間即可。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。