函数包含无限循环,似乎一切正常

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

可能还有其他问题,但这一个是主要问题。