我遇到了这段代码。它只扫描数组元素一次。但我很困惑有两个嵌套的while循环将复杂性增加到O(n ^ 2)。代码如下:
def summaryRanges(nums):
x, size = 0, len(nums)
ans = []
while x < size:
c, r = x, str(nums[x])
while x + 1 < size and nums[x + 1] - nums[x] == 1:
x += 1
if x > c:
r += "->" + str(nums[x])
ans.append(r)
x += 1
return ans
我正在学习算法,所以如果我在某个地方出错,请纠正我。谢谢!!
答案 0 :(得分:1)
你的问题不是100%明确,但是如果你的意思是为什么这个不是O(N ^ 2)而有嵌套循环那么:
尽管存在嵌套循环,但它们使用相同的变量在相同的空间上操作以推进迭代。因为内环不会回溯,并且每当它向前移动时它也会向外推动外环(在完全相同的距离),如果N增长M,则迭代不会增大到M(如果N1 = N0 + M )。 O(N ^ 2)意味着随着N的增长,迭代会呈指数增长。