其他分享
首页 > 其他分享> > LeetCode 53: 最大子序和

LeetCode 53: 最大子序和

作者:互联网

动态规划解法一

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int s = nums.size();
        if (s == 1) {
            return nums[0];
        }
        int mmax = nums[0];
        for (int i = 1; i < s; i++) {
            nums[i] = max(nums[i-1]+nums[i], nums[i]);
            mmax = max(nums[i], mmax);
        }
        return mmax;
    }
};

在这里插入图片描述

贪心解法二

一定要意识到一点,只要连续的几个数加起来是负数,那么它再加上一个数的值一定会比它本身小。

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int s = nums.size(), sum = 0, mmax = nums[0];
        for (int i = 0; i < s; i++) {
            sum += nums[i];
            mmax = max(sum, mmax);
            if (sum < 0) {
                sum = 0;
            }
        }
        return mmax;
    }
};

在这里插入图片描述

标签:mmax,return,nums,int,max,sum,53,LeetCode,子序
来源: https://blog.csdn.net/jining11/article/details/122682981