题目地址:
https://leetcode.com/problems/maximum-subarray/description/
题目描述:
经典的求最大连续子数组之和。
解法:
遍历这个vector,每次循环累加当前数值,同时更新最大值,若当前的累加和是负数,需要更新为0,因为在进行下一次累加求和的时候,
无论下一个数是正还是负,加上上一次的为负的和,都将变得更小,因而下一次求和时直接从当前值开始计算。
代码:
class Solution {
public:
int maxSubArray(vector<int>& nums) {
if (nums.size() == ) {
return nums.at();
} vector<int>::iterator iter = nums.begin();
int max = -( << );
int sum = ;
for ( ; iter != nums.end(); iter++)
{
sum += *iter;
if (sum > max) {
max = sum;
}
if (sum < ) {
sum = ;
}
} return max;
}
};