/*
思路:一个元素一个元素向后加和,并与当前元素对比,找到最大值,如果当前元素较大,那么从当前元素开始向后加和
*/
源代码:
let arr = [1, 2, 25, -12, -55, 103, -250, 100, 120, 130]
/*
思路:一个元素一个元素向后加和,并与当前元素对比,找到最大值,如果当前元素较大,那么从当前元素开始向后加和
*/
function maxSubArray(arr) {
let dp = []
let max
dp[0] = arr[0]
max = arr[0]
// dp中元素代表从0开始以i下标为结尾的最大子序列的值
for (let i = 1; i < arr.length; i++) {
dp[i] = Math.max(dp[i - 1] + arr[i], arr[i])
if (dp[i] > max) {
max = dp[i]
}
}
return max
}
const r = maxSubSequence(arr)
console.log(r);