Skip to content

力扣链接:53.最大子数组和

难度:⭐⭐

解题关键词:动态规划数组

解题思路:动态规划,dp[i]代表第 i 个元素的最大子数组和,dp[i] = Math.max(dp[i - 1] + nums[i], nums[i]),看前面最大和和当前元素相加,还是直接当前元素大,最后找一个最大的子数组和。

typescript
function maxSubArray(nums: number[]): number {
  const len = nums.length;
  const dp = [0];

  let result = -Infinity;

  for (let i = 1; i <= len; i++) {
    // 看前面最大和和当前元素相加,还是直接当前元素大
    dp[i] = Math.max(dp[i - 1] + nums[i - 1], nums[i - 1]);
    // 找一个最大的子数组和
    result = Math.max(result, dp[i]);
  }

  return result;
}