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
.
思路:初始化sum和max值为数组首元素值,从头开始遍历数组,sum<0则将sum置为0,sum>max则更新max为sum。
1 class Solution { 2 public: 3 int maxSubArray(int A[],int n) { 4 int sum=A[0],max=sum; 5 for(int i=1;i<n;i++) 6 { 7 if(sum<0) 8 sum=0; 9 sum+=A[i]; 10 if(sum>max) 11 max=sum; 12 } 13 return max; 14 } 15 };