53. 最大子序和DP常见的模型
Posted 幽殇默
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了53. 最大子序和DP常见的模型相关的知识,希望对你有一定的参考价值。
https://leetcode-cn.com/problems/maximum-subarray/
状态表示: f[i]表示以i结尾的最大子段和
即f[i]=max(f[i-1]+nums[i],nums[i]) => f[i]=max(f[i-1],0)+nums[i]
class Solution {
public:
int f[100100];
int maxSubArray(vector<int>& nums)
{
for(int i=0;i<nums.size();i++) f[i]=-1e9;
f[0]=nums[0];
for(int i=0;i<nums.size();i++) if(i) f[i]=max(f[i-1],0)+nums[i];
int sum=nums[0];
for(int i=0;i<nums.size();i++) sum=max(sum,f[i]);
return sum;
}
};
class Solution {
public:
int maxSubArray(vector<int>& nums)
{
int last=-1e9,ans=-1e9;
for(int i=0;i<nums.size();i++)
{
last=max(last,0)+nums[i];
ans=max(ans,last);
}
return ans;
}
};
以上是关于53. 最大子序和DP常见的模型的主要内容,如果未能解决你的问题,请参考以下文章