空间复杂度,空间优化思路是极简
空间复杂度 O(n) 算法执行过程中额外申请的存储空间不包括输入数据空间优化技术从空间复杂度的角度进行空间优化时顾名思义就是让空间复杂度不复杂思路就是极简不额外申请不留的销毁/释放只留当前所需不得不留的压缩。什么是空间复杂度数组arr 有 1 亿个元素都叫total。那么数组的空间复杂度O(1)。因为不管 arr 有 1 个元素还是 1 亿个total 就一个变量。for x in arr: total x return total # 空间复杂度 O(1)不管 arr 多大total 始终一个变量包含一亿个 int的 数组空间复杂度算法层面O(1)没开新数组数组本身占用内存1 亿 × 4 字节 400 MB跟算法无关实际占的物理空间叫footprint不等于空间复杂度。又开个等长数组呢空间复杂度变成O(1亿)了因为额外开了个和输入一样大的数组。def copy(arr): return [x for x in arr] # 空间复杂度 O(n)额外开了一个等长数组算法的空间复杂度O(n)就是给这个算法额外申请多大空间快速排序的空间复杂度O(log n)—— arr 是输入不算递归栈是额外开的算。随着递归分区栈层数加深后进先出弹出后栈帧销毁递归栈呆着的内存空间是额外申请的。def quicksort(arr): quicksort_helper(arr, 0, len(arr)-1) # 递归栈给这个递归栈申请多大空间呢上面知道数组的空间复杂度是O(1)分区1次栈层数1平均情况下O(log n)层那么快速排序需要的临时空间——平均空间复杂度就是O(log n)。最坏空间复杂度是O(n²。数据实际占的空间有没有用有用但它在另一个层面叫内存占用 / footprint不叫空间复杂度。工程上关心的几个真实指标指标含义例子字面量空间数据结构实际占的字节struct Node { int val; Node* next; }占 16 字节空间复杂度算法额外开的空间递归栈、临时数组驻留集RSS进程实际占的物理内存看top命令对象头开销每个对象的元数据Java开销小Python开销大整个算法占用的空间≈数据结构实际占的字节算法额外开的空间进程实际占的物理内存每个对象的元数据常见算法 / 数据结构复杂度速查表1、基础数据结构数据结构 / 操作时间平均时间最坏空间适用场景数组按下标访问O(1)O(1)O(n)随机访问顺序查找O(n)O(n)O(1)无序线性查找二分查找O(log n)O(log n)O(1)有序数组冒泡 / 选择 / 插入排序O(n²)O(n²)O(1)小数据、教学归并排序O(n log n)O(n log n)O(n)稳定排序、大数据快速排序O(n log n)O(n²)O(log n)通用排序首选堆排序O(n log n)O(n log n)O(1)原地排序、Top K哈希表查找O(1)O(n)O(n)键值映射BST二叉搜索树O(log n)O(n)O(n)有序数据AVL / 红黑树O(log n)O(log n)O(n)平衡有序B 树 / B 树O(log n)O(log n)O(n)磁盘存储、数据库索引跳表O(log n)O(n)O(n)有序集合、RedisTrie前缀树O(m)O(m)O(Σ·m)字符串前缀、自动补全并查集路径压缩O(α(n)) ≈ O(1)O(log n)O(n)连通性问题2、按问题选数据结构的决策树速记同一个问题不同数据结构空间差很多存 1000 个点、10000 条边的图邻接表O(VE) 1.1 万邻接矩阵O(V²) 100 万差了将近 100 倍所以稀疏图千万别用邻接矩阵。需求选查第 K 大 / 动态 Top K堆范围求和 单点修改树状数组 / 线段树前缀匹配Trie连通性判断并查集最短路Dijkstra / SPFA字符串匹配KMP / Z 算法区间最值ST 表 / 线段树缓存 / 键值查找哈希表 LRU充分理解空间复杂度有什么用可以从空间复杂度角度进行空间优化。空间优化思路是极简不浪费不额外申请不留的销毁/释放只留当前所需不得不留的压缩。常用的空间优化技术有滚动数组在动态规划中只保留当前计算所需的前几行/列数据而非整个二维表格将空间从 O(n²) 降至 O(n)。状态压缩用位运算等技巧将多维状态压缩到一维或将状态用整数表示减少存储开销。推导式 / 递推数据边用边销毁不保留中间完整副本例如流式处理或迭代计算。局部变量作用域及时释放临时变量避免不必要的长生命周期占用内存。原地算法直接在输入数据上修改不额外申请等规模存储空间。数据分块 / 懒加载只加载当前需要处理的数据块而非一次性载入全部数据。fivebliss

相关新闻

Java浮点数精度处理:BigDecimal、DecimalFormat等5种保留小数方法详解

Java浮点数精度处理:BigDecimal、DecimalFormat等5种保留小数方法详解

1. 从一次线上事故说起:为什么“保留小数”不是小事前几天,团队里一个刚上线的服务出了个不大不小的线上问题。一个核心的计费模块,在计算用户的服务费用时,本该输出125.50元,结果页面上赫然显示着125.49999999999999。…

2026/8/1 4:49:46阅读更多 →
大模型让闭源驱动走向末路?逆向成本趋零,厂商定价策略或被颠覆!

大模型让闭源驱动走向末路?逆向成本趋零,厂商定价策略或被颠覆!

【导语:7月20日,开源运动精神图腾之一Eric S. Raymond宣称“闭源驱动已死”,他用大模型直接从Windows驱动二进制文件得到源码。此前也有研究者称LLM能逆向驱动。但逆向仍有极限,且法律问题待解,产业格局也需调整。】大…

2026/8/1 4:49:46阅读更多 →
解决matplotlib imshow RGB图像显示警告与数据范围问题

解决matplotlib imshow RGB图像显示警告与数据范围问题

1. 问题初探:当图像显示遭遇“越界”警告如果你在用Python的matplotlib库显示RGB图像时,遇到过那个黄得刺眼的警告——“Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers)”,…

2026/8/1 4:49:46阅读更多 →
模糊预测模型RFIS与ANFIS:原理、实现与工程应用

模糊预测模型RFIS与ANFIS:原理、实现与工程应用

1. 模糊预测模型概述:从理论到工程实践在工业控制和智能系统领域,模糊逻辑作为一种处理不确定性和非线性问题的有效工具已经发展了半个多世纪。不同于传统布尔逻辑非黑即白的二元判断,模糊逻辑通过隶属度函数(Membership Function…

2026/8/1 6:00:08阅读更多 →
TCP协议核心原理与网络性能优化实践

TCP协议核心原理与网络性能优化实践

1. TCP协议的前世今生:从不可靠到可靠的进化之路1981年诞生的TCP协议,最初是为了解决ARPANET网络中的分组丢失问题。当时的设计者们面临着一个根本性矛盾:底层IP协议只提供"尽力而为"的交付服务,而上层应用却需要可靠的…

2026/8/1 6:00:08阅读更多 →
信息安全专业前景怎么样,哪些人不适合报考以及就业方向分析

信息安全专业前景怎么样,哪些人不适合报考以及就业方向分析

专业定位:交叉学科的“双刃剑”特性 在高考志愿填报或考虑转专业的十字路口,信息安全专业往往被贴上“高薪”、“紧缺”、“越老越吃香”的标签。然而,剥开这些光鲜的外衣,我们需要先看清它的本质:这是一个典型的强交叉…

2026/8/1 6:00:08阅读更多 →
AI工程师转型:3个月掌握大模型核心技术

AI工程师转型:3个月掌握大模型核心技术

1. 项目概述:AI工程师转型的核心路径这个学习路线本质上是一套针对零基础或程序员转型AI工程师的加速培养方案。我见过太多人盲目报班买课,结果学了一堆过时的CNN/RNN知识,求职时才发现市场早已转向大模型方向。这套方案直接瞄准当前企业最紧…

2026/8/1 6:00:08阅读更多 →
幻兽帕鲁Mod整合包v1.0.1安装与问题排查全攻略

幻兽帕鲁Mod整合包v1.0.1安装与问题排查全攻略

1. 先搞清楚这个 Mod 整合包到底能解决什么问题如果你在玩《幻兽帕鲁》时觉得原版内容不够丰富、角色外观单一、或者帕鲁种类太少,这个 v1.0.1 的神级 Mod 整合包可能会让你眼前一亮。它不是一个简单的功能叠加,而是把多个实用 Mod 打包在一起&#xff0…

2026/8/1 6:00:08阅读更多 →
枚举基础用法详解

枚举基础用法详解

// 枚举基础用法:声明、赋值、输出、比较和switch控制 enum Apple {Jonathan, GoldenDel, RedDel, Winesap, Cortland }class EnumDemo {public static void main(String args[]) {Apple ap Apple.RedDel;System.out.println("Value of ap: " ap); // 输…

2026/8/1 5:58:08阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/31 20:44:05阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/31 17:41:43阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/31 20:44:05阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/1 0:00:10阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/1 0:00:10阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/1 0:00:10阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/1 0:00:10阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/1 0:00:10阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/1 0:00:10阅读更多 →