Time complexity 为什么下面代码段的时间复杂度为O(n),而空间复杂度为O(1)
下面给出的代码的空间复杂度为O1。我知道这与调用堆栈有关,但我无法正确地将其可视化。如果有人能让我更清楚一点,那就太好了 int pairSumSequenceint n{ 整数和=0; 对于int i=0;iTime complexity 为什么下面代码段的时间复杂度为O(n),而空间复杂度为O(1),time-complexity,space-complexity,Time Complexity,Space Complexity,下面给出的代码的空间复杂度为O1。我知道这与调用堆栈有关,但我无法正确地将其可视化。如果有人能让我更清楚一点,那就太好了 int pairSumSequenceint n{ 整数和=0; 对于int i=0;i
这意味着该函数的时间与n的值成比例。时间/空间复杂度O1表示一个常数复杂度,常数不一定是1,它可以是任意数,但它必须是常数且不依赖于n。例如,如果你总是有1000个独立于n的变量,它仍然会给你O1。有时,它甚至可能发生,常数将是如此之大,相比你的n,On将是比O1更好的常数
现在在你的例子中,你的时间复杂度是开的,因为你进入循环n次,每个循环都有恒定的时间复杂度,所以它与你的n线性相关。然而,你的空间复杂度与n无关。你总是保持相同数量的变量,并且是常数,因此它将是O1。时间/空间复杂度O1意味着常数复杂度,常数不一定是1,它可以是任意数,但它必须是常数,不依赖于n。例如,如果你总是有1000个独立于n的变量,它仍然会给你O1。有时,它甚至可能发生,常数将是如此之大,相比你的n,On将是比O1更好的常数
现在在你的例子中,你的时间复杂度是开的,因为你进入循环n次,每个循环都有恒定的时间复杂度,所以它与你的n线性相关。然而,你的空间复杂度与n无关,你总是保持相同数量的变量,并且是常数,因此它将是O1太棒了!谢谢,我明白了:太好了!谢谢,我明白了: