c++ - 反转 C++ 字符串的时间复杂度

标签 c++ string big-o space-complexity

我的作业中遇到一个问题,即仅使用 O(1) 额外内存就地反转 C++ 字符串中的单词。我对 O(1) 额外内存的含义感到困惑。我理解 O(1) 通常意味着什么,无论输入有多大,计算时间都是恒定的,所以我猜我应该只添加一 block 内存来反向跟踪单词。有什么建议吗?

最佳答案

O(1) 额外内存意味着“最多使用一些常量额外内存”。例如,您无法存储字符串的拷贝,因为这将占用 O(n) 空间,但您可以存储任意恒定数量的额外 intchar

更一般地说,像“O(1)”或“O(n)”这样的语句不一定指的是运行时。 Big-O 表示法是一种描述函数的方法。算法不可能是 O(n),但其运行时间可以是 O(n)。算法的空间使用量同样可以是 O(1)、O(n)、O(2n) 等。

希望这有帮助!

关于c++ - 反转 C++ 字符串的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19215969/

相关文章:

c++ - 玩具语言的自定义分配器

c++ - 测试是否安装了字体 (Win32)

java - java中如何查找二进制字符串的子字符串

algorithm - 大哦嵌套而

algorithm - n 的四次方根的复杂度函数的大 O 表示法

algorithm - 是否存在复杂度为 O(log n) 而 power(2, f) 不在 O(n) 中的函数

c++ - 需要解释 : Write a program that reads an decimal number between 0 and 2G and displays the 32-bit binary version on the video display

c++ - 从 vector<string> 中查找字符串的第一次出现

c# - 如何从用户输入中保护字符串

C - 从文本文件中读取字符串并按大小排列