题目: 同力扣53 最大子序和
输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。
要求时间复杂度为O(n)。

题解思路:
方法一:动态规划
注意res=dp[0]=nums[0];
函数代码:
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int n=nums.size();
vector<int> dp(n,0);
dp[0]=nums[0];
int res=nums[0];
for(int i=1;i<n;i++)
{
dp[i]=max(dp[i-1]+nums[i],nums[i]);
res=max(res,dp[i]);
}
return res;
}
};
精简版:
class Solution {
public:
int maxSubArray(vector<int>& nums) {
vector<int> dp(nums.size(),nums[0]);
int ans=dp[0];
for(int i=1;i<nums.size();i++)
{
dp[i]=max(dp[i-1]+nums[i], nums[i]);
ans=max(ans, dp[i]);
}
return ans;
}
};

本文解析力扣53题“最大子序和”,提供动态规划解决方案,实现O(n)时间复杂度,通过实例讲解算法思路,适用于算法初学者及面试备考人员。
191

被折叠的 条评论
为什么被折叠?



