Re: [闲聊] 每日leetcode

楼主: JIWP (JIWP)   2024-03-17 11:39:39
57. 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
}
作者: DJYOSHITAKA (Evans)   2024-03-17 11:59:00
大师

Links booklink

Contact Us: admin [ a t ] ucptt.com