[LeetCode 题解]: Maximum Subarray

前言

 

【LeetCode 题解】系列传送门:  http://www.cnblogs.com/double-win/category/573499.html

 

1.题目描述

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.

2. 解法

 1 class Solution {

 2 public:

 3     int maxSubArray(int A[], int n) {

 4         int sum,ans,i,mark=0;

 5         sum=ans=i=0;

 6         

 7         for(i=0;i<n;i++)

 8            if(A[i]>=0) mark=1;

 9         

10         if(mark==0)

11         {

12             ans=A[0];

13             for(i=1;i<n;i++)

14                if(A[i]>ans) ans=A[i];

15             

16         }

17         else

18         {

19             for(i=0;i<n;i++)

20             {

21                sum+=A[i];

22                if(sum<0)

23                    sum=0;

24                if(sum>ans) ans=sum;

25             }

26         }

27         return ans;        

28     }

29 };

3. 相关题目

Gas Station 题解 http://www.cnblogs.com/double-win/p/3746637.html

作者:Double_Win

出处:   http://www.cnblogs.com/double-win/p/3746672.html

声明: 由于本人水平有限,文章在表述和代码方面如有不妥之处,欢迎批评指正~

你可能感兴趣的:(LeetCode)