动态规划 数组中子序列最大累加和

171 阅读1分钟

题目

给定一个数组,求数组中不要求连续的子项的最大累加和

  • 记录之前位置的最大累加和,与当前位置对比即可
function maxNonAdjacentSum(nums) {
  if (nums.length === 0) {
    return 0;
  }

  let dp = nums[0];

  for (let i = 1; i < nums.length; i++) {
    dp = Math.max(dp, dp + nums[i]);
  }

  return dp;
}

// 示例
let nums = [1, -3, 3, -1, 5];
console.log(maxNonAdjacentSum(nums)); // 输出:9 (1 + 3 + 5)