其他分享
首页 > 其他分享> > Leetcode53. 最大子序和

Leetcode53. 最大子序和

作者:互联网

53. 最大子序和

给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

dp入门题

状态转移方程:\(f[i]=max(f[i-1]+a[i],a[i])\)

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

考虑利用滚动数组对空间进行优化,得到下面的代码

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

标签:最大,nums,int,sum,Leetcode53,vector,数组,ans,子序
来源: https://www.cnblogs.com/Hiraeth-dh/p/15117043.html