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;
}
};
本文介绍了一种寻找含至少一个数的连续子数组并求其最大和的算法。以[-2,1,-3,4,-1,2,1,-5,4]为例,[4,-1,2,1]具有最大和为6。文章提供了一个O(n)复杂度的解决方案,并提及了分治法作为一种替代方案。
1636

被折叠的 条评论
为什么被折叠?



