一、解题思路
定义状态:
dp[i]表示以第i个数结尾的最大连续子数组的和
边界状态:
dp[0] = nums[0]
转移方程为:
dp[i] = Math.max(dp[i - 1] + num, num)
接下来只要找出dp[i]中的最大值即可。
二、代码实现
const maxSubArray = nums => {
const max = nums.length
if (!max) {
return 0
}
const dp = [nums[0]]
if (max === 1) {
return dp[0]
}
let ans = dp[0]
for (let i = 1; i < max; i++) {
const num = nums[i]
dp[i] = Math.max(dp[i - 1] + num, num)
ans = Math.max(ans, dp[i])
}
return ans
}
如果本文对您有帮助,欢迎关注微信公众号,为您推送更多大前端相关的内容, 欢迎留言讨论,ε=ε=ε=┏(゜ロ゜;)┛。
您还可以在这些地方找到我: