码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode 刷题之路 83 Maximum Subarray

时间:2014-08-13 15:01:56      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:style   color   os   io   for   ar   代码   amp   

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,若sum小于0,必然会对总的和有损耗,因此将sum重置为0,从当前位置继续重复上述过程,直到数组结束,与此同时设置max变量记录求和过程中遇到的最大值。

执行完上述过程,判断max等于0(max初值为0),若大于0,max为所求结果,返回max。

若仍然等于0说明求和过程中未出现过正数,数组中全是负数或0,此时数组最大和就是数组中最大的最大的元素,返回数组中最大的元素即可。

代码如下:

class Solution {
public:
    int maxSubArray(int A[], int n) 
    {
        int sum=0,max=0;
        for(int i=0;i<n;i++)
        {
            sum+=A[i];
            if(sum<0)
                sum=0;
            if(sum>max)
                max=sum;
        }
        if(max==0)  //说明数组中无正数,遍历取0或者数
        {
            max=A[0];
            for(int i=1;i<n;i++)
                if(max<A[i])
                    max=A[i];
        }
        return max;
    }
};


leetcode 刷题之路 83 Maximum Subarray,布布扣,bubuko.com

leetcode 刷题之路 83 Maximum Subarray

标签:style   color   os   io   for   ar   代码   amp   

原文地址:http://blog.csdn.net/u013140542/article/details/38535567

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!