了解两个嵌套while循环中的时间复杂度

时间:2015-07-23 22:29:53

标签: data-structures time-complexity

我遇到了这段代码。它只扫描数组元素一次。但我很困惑有两个嵌套的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

我正在学习算法,所以如果我在某个地方出错,请纠正我。谢谢!!

1 个答案:

答案 0 :(得分:1)

你的问题不是100%明确,但是如果你的意思是为什么这个不是O(N ^ 2)而有嵌套循环那么:

尽管存在嵌套循环,但它们使用相同的变量在相同的空间上操作以推进迭代。因为内环不会回溯,并且每当它向前移动时它也会向外推动外环(在完全相同的距离),如果N增长M,则迭代不会增大到M(如果N1 = N0 + M )。 O(N ^ 2)意味着随着N的增长,迭代会呈指数增长。