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

数组传入函数的空间复杂度判定疑问

关于sumArr函数空间复杂度的解析

首先明确结论:你对这个函数空间复杂度为**O(1)**的判断是正确的,笔记的说法存在错误。

核心原因:C语言数组参数的本质

在C语言中,函数参数列表里的int a[]是语法糖,实际等价于int* a——函数接收的只是一个指向数组首元素的指针,并不会复制整个输入数组。

函数的额外空间占用

这个函数执行时,额外分配的空间只有两个局部变量:

  • sum:一个int类型变量,固定大小
  • i:循环变量,同样是固定大小的int类型

这些空间的大小和输入数组的长度n完全无关,属于常数级别的空间开销,因此空间复杂度是O(1)。

笔记错误的可能原因

笔记里说“数组被直接复制”是混淆了两种场景:

  • 如果是在函数内部主动创建新数组(比如int temp[size];或者malloc(size * sizeof(int))),那确实会占用O(n)的空间
  • 但这个函数只是通过指针访问原数组,没有进行任何数组复制操作,不存在额外的O(n)空间开销

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 13:12:02