“不使用额外的内存”和“使用常量内存”之间的区别

时间:2018-07-18 08:11:47

标签: algorithm space-complexity

当我使用OJ练习算法时,我经常看到这两个要求。这两个要求意味着同一件事吗?

例如:

  1. 单数II:您可以在不使用额外内存的情况下实现它吗?

  2. 单数III:您能否仅使用恒定的空间复杂度来实现它?

3 个答案:

答案 0 :(得分:1)

不。

不使用额外的内存通常意味着您可以覆盖输入。因此它会为更大的输入使用更多的内存(但只是该内存-仅此而已)。 (通常也允许使用较小的常量空间,例如用于函数堆栈)。

恒定空间复杂度通常意味着不允许覆盖输入,而只能使用较小的恒定空间。

答案 1 :(得分:0)

通常,“恒定空间”复杂性意味着空间需求不会增加。输入增加(对于所有输入大小都是固定的),但是当空间需求随着增加no而增加时,据说正在使用额外的内存。输入(通常较大的输入大小)。 注意:此处不考虑输入所需的空间,而是考虑了算法/程序所需的额外空间。

答案 2 :(得分:0)

它们的含义不同。

  

您可以在不使用额外内存的情况下实现它吗?

这意味着除了给定输入之外,您不能使用任何其他空间。

  

您可以仅使用恒定的空间复杂度来实现它吗?

这意味着无论输入大小如何,用于解决问题的额外空间都应为常数。