算法:插入区间
?給出一個(gè)無(wú)重疊的 ,按照區(qū)間起始端點(diǎn)排序的區(qū)間列表。
在列表中插入一個(gè)新的區(qū)間,你需要確保列表中的區(qū)間仍然有序且不重疊(如果有必要的話(huà),可以合并區(qū)間)。
示例 1:
輸入: intervals = [[1,3],[6,9]], newInterval = [2,5] 輸出: [[1,5],[6,9]]
//插入?yún)^(qū)間func insert(intervals [][]int, newInterval []int) (ans [][]int) {//取出新區(qū)間左端點(diǎn)和右端點(diǎn)left, right := newInterval[0], newInterval[1]merged := falsefor _, interval := range intervals {if interval[0] > right {// 在插入?yún)^(qū)間的右側(cè)且無(wú)交集if !merged {//left和right是之前合并的區(qū)間ans = append(ans, []int{left, right})merged = true}//append合并當(dāng)前符合條件的數(shù)組ans = append(ans, interval)} else if interval[1] < left {// 在插入?yún)^(qū)間的左側(cè)且無(wú)交集ans = append(ans, interval)} else {// 與插入?yún)^(qū)間有交集,計(jì)算它們的并集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/
總結(jié)