子数组的最大累加和[c++]
子数组的最大累加和问题
http://www.nowcoder.com/questionTerminal/554aa508dd5d4fefbf0f86e5fe953abd
看了几个答案感觉都有点小问题,稍微改了一下;
数组当前位置的值 = max(当前值,当前值+前一时刻的累加和);
得考虑第一个元素,可能第一个元素就是最大累加和;
int maxsumofSubarray(vector<int>& arr) {
//m记录最大值;m初始化为数组第一个元素,且不能初始化为0。
//因为可能数组元素全负,这样最大和必小于0;
int m = arr[0];
for(int i=1;i<arr.size();i++){
arr[i]=max(arr[i],arr[i]+arr[i-1]);
m = max(arr[i],m);
}
return m;
}
字节跳动公司福利 1309人发布
查看30道真题和解析