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
.
More practice:
If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.
try coding another solution using the divide and conquer approach,题目提示了用分而治之的方法解。
不过这里给出一种可以参考的方法,很简单。
class Solution {
public:
int maxSubArray(int A[], int n) {
int sum = A[0], max = A[0];
for (int i = 1; i < n; i++)
{
if (sum < 0)
sum = A[i];
else
sum += A[i];
if (sum > max)
max = sum;
}
return max;
}
};