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