原题
https://leetcode.cn/problems/insert-interval/description/
思路
遍历, 找出待插入的位置
复杂度
时间:O(n)
空间:O(n)
Python代码
class Solution:
def insert(self, intervals: List[List[int]], newInterval: List[int]) -> List[List[int]]:
ans = []
# 插入索引
index = 0
for i in range(len(intervals)):
# 当前区间与新区间不相交
if intervals[i][1] < newInterval[0]:
ans.append(intervals[i])
index += 1
# 当前区间与新区间不相交
elif intervals[i][0] > newInterval[1]:
ans.append(intervals[i])
# 相交, 更新区间的起点和终点
else:
newInterval[0] = min(newInterval[0], intervals[i][0])
newInterval[1] = max(newInterval[1], intervals[i][1])
ans.insert(index, newInterval)
return ans
Go代码
func insert(intervals [][]int, newInterval []int) [][]int {
var ans [][]int
// 插入索引
index := 0
for i := 0; i < len(intervals); i++ {
// 当前区间与新区间不相交
if intervals[i][1] < newInterval[0] {
ans = append(ans, intervals[i])
index++
} else if intervals[i][0] > newInterval[1] {
ans = append(ans, intervals[i])
} else {
// 相交, 更新区间的起点和终点
newInterval[0] = min(newInterval[0], intervals[i][0])
newInterval[1] = max(newInterval[1], intervals[i][1])
}
}
// 插入区间
ans = append(ans, []int{})
copy(ans[index+1:], ans[index:])
ans[index] = newInterval
return ans
}
334

被折叠的 条评论
为什么被折叠?



