算法:插入区间
?給出一個無重疊的 ,按照區間起始端點排序的區間列表。
在列表中插入一個新的區間,你需要確保列表中的區間仍然有序且不重疊(如果有必要的話,可以合并區間)。
示例 1:
輸入: intervals = [[1,3],[6,9]], newInterval = [2,5] 輸出: [[1,5],[6,9]]
//插入區間func insert(intervals [][]int, newInterval []int) (ans [][]int) {//取出新區間左端點和右端點left, right := newInterval[0], newInterval[1]merged := falsefor _, interval := range intervals {if interval[0] > right {// 在插入區間的右側且無交集if !merged {//left和right是之前合并的區間ans = append(ans, []int{left, right})merged = true}//append合并當前符合條件的數組ans = append(ans, interval)} else if interval[1] < left {// 在插入區間的左側且無交集ans = append(ans, interval)} else {// 與插入區間有交集,計算它們的并集left = min(left, interval[0])right = max(right, interval[1])}}//最后合并if !merged {ans = append(ans, []int{left, right})}return }func min(a, b int) int {if a < b {return a}return b }func max(a, b int) int {if a > b {return a}return b }鏈接:https://leetcode-cn.com/problems/insert-interval/solution/cha-ru-qu-jian-by-leetcode-solution/
總結