标签:
给定一个序列,求出该序列的子序列和的最大值:
代码1:
int maxSubSum1(const vector<int> &vec) { int max_sum=0; for(int i=0;i<vec.size();++i) { int this_sum=0; for (int j=i;j<vec.size();++j) { this_sum+=vec[j]; if(this_sum>max_sum) max_sum=this_sum; } } return max_sum; }
该算法的时间复杂度为O(n2),空间复杂度为O(1)。
高效地算法2:
int maxSubSum2(const vector<int> &vec) { int max_sum=0,this_sum=0; for (int i=0;i<vec.size();++i) { this_sum+=vec[i]; if(this_sum>max_sum) max_sum=this_sum; else if(this_sum<0) this_sum=0; } return max_sum; }
该算法的时间复杂度为O(n),空间复杂度为O(1)。
标签:
原文地址:http://www.cnblogs.com/acode/p/4550997.html