连续子数组的最大和
Last updated
Last updated
问题简述
思路:动态规划
状态定义:记 dp[i]
表示以 nums[i]
结尾的连续子数组最大和;
“以
nums[i]
结尾”表示就是这个数一定会加上去,那么要看的就是这个数前面的部分要不要加上去——大于零就加,小于零就舍弃。
转移方程:
当 $dp[i-1] > 0$ 时:执行 $dp[i] = dp[i-1] + nums[i]$;
当 $dp[i-1] \le 0$ 时:执行 $dp[i] = nums[i]$;
优化:因为每次只与上一个状态有关,所以可以只使用一个变量来存储;