Maximum Subarray
原题:Find the contiguous subarray within an array (containing at least one number) which has the largest sum.
解决思路:设置两个变量,sum和maxSum。令sum和maxSum开始都为A[0]. 逐个扫描数组,不断累加到sum中,若sum<0,则把sum置零。若sum不小于0,则和maxSum比较,保证maxSum始终为sum和maxSum中最大的一个。下面是代码:
class Solution {
public:
int maxSubArray(int A[], int n) {
int sum = A[0];
int maxSum = A[0];
for(int i=1;i<n;++i)
{
if(sum < 0)
sum = 0;
sum += A[i];
maxSum = sum > maxSum? sum: maxSum;
}
return maxSum;
}
};