algorithm - 为什么字符串的空间复杂度是 O(n) 而数字是 O(1)?
问题描述
我对辅助空间复杂性有点迷茫。
在我参加的讲座中,讲师指出字符串具有 O(n) 的空间复杂度,因为字符串(n) 的长度会有所不同。但是诸如数字、布尔值、未定义等原语具有恒定的空间复杂度 O(1)。
我很困惑,因为如果字符串的空间因长度不同而不同,那么数字也会不一样吗?因为它们也会有不同的“长度”?
我确实理解布尔值和未定义是 O(1),我的意思是真/假,未定义和 null 是与长度无关的实例。
如果有人能为我澄清这一点,我将不胜感激。
解决方案
在现实世界中,数字大小确实是无限的,但这里是关于数字原语。根据定义,每个原语都需要固定数量的存储单元(这就是它只能保存有限范围值的原因)。与数字原语不同,字符串的大小在理论上是无限的,它占用与输入大小相对应的存储空间(即构成字符串的字符)。
推荐阅读
- ios - RxSwift - onError 发出两次
- firebase - 反应原生 Firebase。将数据推送到 firebase 数据库后,我在 then() 中得到 null 而不是快照
- javascript - 有两个堆栈的队列
- gradle - 在多个 Gradle 任务之前创建目录
- javascript - 固定位置在粘性导航栏上不起作用
- ios - React-Native 和 Detox:无法关闭位置弹出窗口
- python - Django Rest Framework DELETE 在正文中不返回任何内容
- clojure - 使用 Clojure 重新排序嵌套排序映射
- asp.net-mvc-5 - Lambda 和 DynamoDB 上的无服务器 CMS
- c - C中的函数原型