53.最大子数组和
思路:动态规划
递推公式:dp[ j ]=max{ dp[ j - 1 ] + nums[ j ] , dp[ j ] }
用一个for遍历数组,dp[ j ]代表由i开始到j结尾的最大子序和
后来发现只用输出和,不需要记录子序列的开始和结束,所以不需要定义i
一道基础动态规划,ac代码如下:
int maxSubArray(vector<int>& nums) {
vector<int>dp(nums.size());
dp[0]=nums[0];
int result=dp[0];
for(int i=1;i<nums.size();i++){
dp[i]=max(dp[i-1]+nums[i],nums[i]);
result=max(result,dp[i]);
}
return result;
}
重拾信心!