leetcode-53.最大子序和
题意
给定一个整数数组
nums
,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:
输入: [-2,1,-3,4,-1,2,1,-5,4],
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
算法(DP O(n))
定义待返回变量 ans(初值nums[0]), 中间累加变量 sum(初值0)
遍历给定数组
如果sum大于0,sum求和当前元素值;否则,当前元素值赋值sum
如果sum大于ans, sum赋值ans
code
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int ans = nums[];
int sum = ;
for(auto num : nums)
{
if(sum > )
{
sum += num;
}
else
{
sum = num;
}
if(sum > ans)
{
ans = sum;
}
}
return ans;
}
};