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.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 |
class
Solution {public: int
maxSubArray(int
A[], int
n) { vector<int> sum; if(n == 0)return
0; int
maxsum =A[0]; sum.push_back(A[0]); for(int
i = 1 ; i < n ; i++) { int
temp = sum[i-1]+A[i]; if(temp > maxsum)maxsum = temp; sum.push_back(temp); } int
min = 0; for(int
i = 1 ; i < n;i++) { if(sum[i] - sum[min] > maxsum) maxsum = sum[i] - sum[min]; if(sum[i] < sum[min])min = i; } return
maxsum; }}; |
Maximum Subarray,布布扣,bubuko.com
原文:http://www.cnblogs.com/pengyu2003/p/3595264.html