我的作业中有一个问题是在C ++字符串中反转单词,只有O(1)额外的内存。我对O(1)额外的记忆意味着什么感到困惑。我理解O(1)通常意味着什么,无论输入多大,计算的时间都是不变的,所以我猜我应该只添加一段内存来反向跟踪单词。有什么建议吗?
答案 0 :(得分:2)
O(1)额外的内存意味着“最多使用一些额外的内存”。例如,您无法存储字符串的副本,因为这将占用O(n)空间,但您可以存储任意数量的额外int
s,char
等。< / p>
更一般地说,诸如“O(1)”或“O(n)”之类的语句不一定指运行时。 Big-O表示法是一种描述函数的方法。算法不能是O(n),但其运行时可以是O(n)。算法的空间使用可以类似地为O(1),O(n),O(2 n )等。
希望这有帮助!