算法

Maximum Sum in Contiguous Array

寻找连续子数组的最大和

给定一个数组 numbers,找出其中和最大的连续子数组,返回该子数组的和。

思路

连续子数组中最大乘积类似。

使用动态规划,遍历数组时,维护:

  • current:当前最大子数组和

状态转移方程:

  • current = max(num, current + num)

代码

function maxSubarraySum(numbers: number[]): number {
  if (numbers.length === 0) return 0;

  let current = numbers[0];
  let result = numbers[0];

  for (let i = 1; i < numbers.length; i++) {
    const num = numbers[i];

    current = Math.max(num, current + num);
    result = Math.max(result, current);
  }

  return result;
}
在 GitHub 上编辑

上次更新于