这让我有点困惑。当约束如下时,我解决给定问题的方法应该是什么:
1)不使用额外空间:例如:如果我想对给定的数组进行排序,我几乎没有办法做到这一点。冒泡排序,不断交换(只是循环,没有递归)。我相信据说这是不使用额外空间的。如果我使用递归对元素进行排序,会发生什么情况。是和“不使用额外空间”一样,还是使用的堆栈计入算法的空间复杂度?
2)在O(1)空间中:O(1)空间是什么意思?这是否意味着恒定的空间。现在如果它是常数空间,那么请评论以下情况:
a)如果我在第三个变量的帮助下交换冒泡排序。它不是一个额外的空间,它不会依赖于输入的大小,所以它是恒定的空间。
b)此外,如果我对自然数应用计数排序,它实际上并不需要与总数成比例的空间量,我们是否认为它在恒定空间 O(1) 中。
如果有区别,请解释一下。谢谢