前往
大廳
主題

LeetCode - 57. Insert Interval 解題心得

Not In My Back Yard | 2021-11-03 00:00:04 | 巴幣 0 | 人氣 429

題目連結:


題目意譯:
給定一個不重疊的區間之集合 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] 升序排序的特性之後,按照這題的策略合併區間即可。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作