You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

嵌套循环函数的时间与空间复杂度界定疑问

嵌套循环代码的时间与空间复杂度分歧澄清

假设有一个整数的列表的列表数据结构,以下是Python代码(非Python开发者也可理解):

# 接收类型为列表的列表的参数outer_list的函数
def stupid_foo(outer_list: list[list[int]]):
    new_outer_list: list = []

    # 遍历外层列表的每个元素
    for inner_list in outer_list:
        new_inner_list: list = []

        # 遍历内层列表的每个元素
        for integer_element in inner_list:
             new_inner_list.append(integer_element)

        new_outer_list.append(new_inner_list)

(注:原代码中的大括号为Python语法错误,已修正为正确的冒号格式)

时间复杂度

我认为其时间复杂度为O(n*m)(若假设外层列表包含n个内层列表,每个内层列表的元素数量均为n,可简化为O(n²),即二次方),理由是外层列表的每个元素对应遍历n个内层元素,总操作数为n个n相加,即n²。但同事认为:

该函数的时间复杂度与输入大小严格线性相关,因为它仅遍历每个元素一次

我原本坚信是二次方复杂度,现在产生了疑问,哪种结论正确?

空间复杂度

根据标准定义,我认为空间复杂度表示算法额外占用的空间(通常忽略输入本身的空间)。假设引用、指针、循环变量等占用空间为常量可忽略,该算法的空间复杂度为线性O(k)(k为输入的总元素数量),理由是输入包含k个元素时,算法额外分配k个元素的存储空间,比如输入占250B,额外内存上限为250B。
但同事认为其空间复杂度应为O(n*m)(若假设n=m,简化为O(n²),即二次方)。
我的理解是空间复杂度核心看额外空间随输入规模的变化关系,与数据结构嵌套层级关联不大。若空间复杂度为二次方,意味着输入250个元素时,额外占用内存峰值为(250²)个元素的空间,但我认为这并非空间复杂度的正确表示方式。
哪种结论更符合规范?理由是否成立?

补充说明

经交流,分歧核心在于:时间复杂度中的变量定义(嵌套层级的元素数量)与空间复杂度中的变量定义是否统一。我的二次方时间、线性空间复杂度结论基于“时间复杂度按嵌套层级的元素数量计算,空间复杂度按总元素数量计算”的假设。

内容的提问来源于stack exchange,提问作者ustulation

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 10:47:21