这是使用 DP 方法找到最大连续子序列和的算法。该算法似乎很好,但有人提到这具有空间复杂度 O(n)。为什么?
对我来说,这个算法似乎有 O(1) 的空间复杂度。我想问的另一件事是,在不使用任何类型递归的算法的情况下,除了恒定的空间复杂度之外,它是否还有可能具有其他任何东西?
Create arrays S and T each of size n.
S[0] = A[0];
T[0] = 0;
max = S[0];
max_start = 0, max_end = 0;
For i going from 1 to n-1:
// We know that S[i] = max { S[i-1] + A[i], A[i] .
If ( S[i-1] > 0)
S[i] = S[i-1] + A[i];
T[i] = T[i-1];
Else
S[i] = A[i];
T[i] = i;
If ( S[i] > max)
max_start = T[i];
max_end = i;
max = S[i];
EndFor.
Output max_start and max_end