标签:
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.
If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.
思路:对于每个数来说如果加入它后此时sum<0的话,那么就让sum=此时这个数,如果大于0的话,那么加上它的话就可能得到最大值,比较得到结果
<pre name="code" class="cpp">class Solution {
public:
int maxSubArray(int A[], int n) {
int ans = INT_MIN, sum = INT_MIN;
for (int i = 0; i < n; i++) {
sum = sum < 0 ? A[i] : A[i] + sum;
if (sum > ans)
ans = sum;
}
return ans;
}
};
标签:
原文地址:http://blog.csdn.net/u011345136/article/details/44229439