最大子序和。给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例:
1 | |
进阶:
如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。
思路一
动态规划,dp[i] 表示[0:i] 中最大子序和,并且必须包含 nums[i]。则当 dp[i-1] > 0 时, dp[i] = dp[i-1] + nums[i],否则 dp[i] = nums[i],然后 dp 中的最大值。时间复杂度 $O(n)$。
1 | |