题目描述
一维模式识别中,常常需要计算连续子向量的最大和,例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。(子向量的长度至少是1),返回最大和
遍历加和 一旦加和过程中出现变小的情况 就重新选择起点继续加和
选择一个最小的数做初始化 负数在内存中的补码 是用原码取反加一完成 32位有符号最小的数是 0x80000000
动态规划的思想 递归方式分析 循环方式解决
class Solution {
public:
int FindGreatestSumOfSubArray(vector<int> arry) {
if(arry.empty())
return 0;
int temp =0,result = 0x80000000; //有符号最小的数 -2的31次方
for(size_t i=0;i<arry.size();i++){
if(temp <= 0)
temp = arry[i];
else
temp += arry[i];
if(result < temp)
result = temp;
}
return result;
}
};