LeetCode 53 | 最大子序和
题目
题解
用dp想。dp[i]表示以第i个元素结尾的最大子序和,那么显然dp[0]=nums[0],推到一下很容易得出dp[i]=max(nums[i],nums[i]+dp[i-1])。最大子序和就是dp中最大的数啦。
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int n=nums.size();
vector<int> dp(n,0);
dp[0]=nums[0];
for(int i=1;i<n;i++){
dp[i]=max(nums[i],nums[i]+dp[i-1]);
}
int res=dp[0];
for(auto c:dp){
res=max(res,c);
}
return res;
}
};