leecode第五十三题(最大子序和)

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int len=nums.size();
        if(len==1)//特殊情况
            return nums[0];
        
        int max_num=INT_MIN,sum_num=0;//注意这里max_num初始化为INT_MIN,以防数组全为负的情况
        for(int i=0;i<len;i++)
        {
            sum_num+=nums[i];
            if(nums[i]>sum_num)//如果当前求和值还不如我大,要他们何用
                sum_num=nums[i];
            
            if(sum_num>max_num)//一路比较最高值
                max_num=sum_num;
        }
        
        return max_num;//返回即可
    }
};

分析:

这个题在剑指offer上见过,所以思路还在,写的也算快,唯一有错误的是max_num初始化,我没有考虑全负的情况(也是自己写的有点快,自我感觉太熟了还真不好)。

猜你喜欢

转载自www.cnblogs.com/CJT-blog/p/10592853.html