最大连续子数组和
Maximum Contiguous Subarray
题目详情
数组 长度 (可为负)。求
Array length , possibly negative. Find
解析
Kadane 算法可在 时间完成:
double maxSubarray(const double A[], int n){
double T=A[0], Vmax=A[0];
double Tmin = (T<0)?T:0;
for(int i=1;i<n;i++){
T += A[i];
if(T - Tmin> Vmax) Vmax=T-Tmin;
if(T< Tmin) Tmin=T;
}
return Vmax;
}Original Explanation
Kadane’s in :
double maxSubarray(const double A[], int n){
double T=A[0], Vmax=A[0];
double Tmin = (T<0)?T:0;
for(int i=1;i<n;i++){
T += A[i];
if(T - Tmin> Vmax) Vmax=T-Tmin;
if(T< Tmin) Tmin=T;
}
return Vmax;
}