作者:
JIWP (JIWP)
2024-03-17 11:39:3957. Insert Interval
給一個array:intervals;intervals[i]=[start_i,end_i]
intervals是照這start_i的大小由小排到大的
並且intervals中的元素沒有重疊
給一個newInterval要插入intervals中,請回傳新的intervals
思路 :
可以分成3種情況
1.newInterval[0]>intervals[i][1]:
該情況直接將intervals放入新的array就好
2.newInterval[1]<intervals[i][0]:
該請況要去確認newInterval有沒有放入新的array,如果還沒就放進去
並將intervals[i]也放進去
3.newInterval和intervals[i]有重疊
將newInterval[0]替換成比較小的那個、newInterval[1]替換成比較大的那個
golang Code:
func insert(intervals [][]int, newInterval []int) [][]int {
ans:=make([][]int,0)
HasInsert:=false
for _,val:=range intervals{
if newInterval[0]>val[1]{
ans=append(ans,val)
}else if val[0]>newInterval[1]{
if !HasInsert{
ans=append(ans,newInterval)
HasInsert=true
}
ans=append(ans,val)
}else{
if val[0]<newInterval[0]{
newInterval[0]=val[0]
}
if val[1]>newInterval[1]{
newInterval[1]=val[1]
}
}
}
if !HasInsert{
ans=append(ans,newInterval)
}
return ans
}