标签:
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