Find the contiguous subarray within an array (containing at least one number) which has the largest sum.
For example, given the array [−2,1,−3,4,−1,2,1,−5,4]
,
the contiguous subarray [4,−1,2,1]
has the largest sum = 6
.
Accept: 5ms, 动态规划
int maxSubArray(int A[], int n) {
int max = INT_MIN;
int i = 0;
for (; i < n && A[i]<=0; ++i) {
if (A[i] > max) {
max = A[i];
}
}
int sum = 0;
for (; i < n; ++i) {
if (A[i] + sum < 0) {
sum = 0;
continue;
}
sum += A[i];
if (sum > max) {
max = sum;
}
}
return max;
}