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

静态数组删除最后一个元素的时间复杂度:O(n)还是O(1)?

静态数组删除最后一个元素的时间复杂度分析

首先得明确:静态数组是编译阶段就固定了内存大小的内存块,物理上的内存空间一旦分配就没法改变——所谓的“数组大小变化”,都是逻辑层面的操作。

针对你的问题,分两种情况说:

  • 如果只是要“删除最后一个元素”(让它不再被当作有效元素),完全不需要动物理内存,只需要维护一个记录有效元素个数的变量(比如叫size),把这个变量减1就行。这个操作是纯数值修改,时间复杂度是O(1)。你说的“标记最后元素为空”本质就是这个逻辑——不用真的清空内存,只要让程序知道“这个位置之后的元素不算数”就行,这个思路完全正确,也是实际开发里处理静态数组的常规操作。
  • 要是有人硬要“物理上缩小数组”——比如重新申请一块更小的内存,把原数组除了最后一个元素的所有内容复制过去,那这个操作的时间复杂度就是O(n),因为要复制n-1个元素。但这种做法毫无意义,静态数组的内存本来就是固定分配的,浪费这点空间远不如用逻辑长度管理高效,实际没人这么干。

总结一下:静态数组删除最后一个元素的时间复杂度可以做到O(1),你的思路完全没问题,核心就是用逻辑有效长度代替物理数组的大小,没必要去折腾内存复制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:09:16