函数包含无限循环,似乎一切正常
Function contains infinite loops, and it seems everything is ok
我写了函数,输入数组是间隔列表和 returns 非重叠间隔。
这是函数:
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]
]
您的内部 while 循环使用了错误的条件。当 intervals[i][1]
是 大于或等于 ,不小于或等于 intervals[i+1][0]
.
时,您想合并两个区间
while intervals[i][1] >= intervals[i+1][0]:
i += 1
p2 += 1
可能还有其他问题,但这一个是主要问题。
我写了函数,输入数组是间隔列表和 returns 非重叠间隔。 这是函数:
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]
]
您的内部 while 循环使用了错误的条件。当 intervals[i][1]
是 大于或等于 ,不小于或等于 intervals[i+1][0]
.
while intervals[i][1] >= intervals[i+1][0]:
i += 1
p2 += 1
可能还有其他问题,但这一个是主要问题。