我寫了函式,輸入陣列是區間串列并回傳非重疊區間。這是函式:
def mergeOverlappingIntervals(intervals):
new=[]
i=0
while i <len(intervals):
if intervals[i][1]<intervals[i 1][0]:
new.append(intervals[i])
i =1
else:
p1=i
p2=i
while intervals[i][1]<=intervals[i 1][0]:
i =1
p2 =1
new.append([intervals[p1][0],intervals[p2][1]])
i=p2
return new
但是這個函式包含無限回圈。我不清楚為什么這個函式包含無限回圈并且沒有得到預期的輸出。輸入示例:
interval=[
[1, 2],
[3, 5],
[4, 7],
[6, 8],
[9, 10]
]
outputs=[
[1, 2],
[3, 8],
[9, 10]
]
uj5u.com熱心網友回復:
您的內部 while 回圈使用了錯誤的條件。你想什么時候合并兩個間隔intervals[i][1]為大于或等于,不小于或等于intervals[i 1][0]。
while intervals[i][1] >= intervals[i 1][0]:
i = 1
p2 = 1
可能還有其他問題,但這個問題是首要問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/390845.html
