这是使用DP方法寻找最大连续子序列和的算法。该算法似乎相当不错,但提到它的空间复杂度为O(n)。为什么呢?
对我来说,这个算法的空间复杂度似乎是O(1)。
另外一个我想问的问题是,在没有使用任何递归的算法中,是否可能拥有除常数空间复杂度以外的其他复杂度?
对我来说,这个算法的空间复杂度似乎是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
O(n)
空间..Kadane算法只需要常数级的空间:http://marcodiiga.github.io/maximum-and-maximum-zero-sum-subarray-problems - Marco A.