最大子数组和

发布于 2023-05-03 21:32:22 字数 956 浏览 49 评论 0

给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

子数组 是数组中的一个连续部分。

输入: nums = [-2,1,-3,4,-1,2,1,-5,4]
输出:6
解释:连续子数组 [4,-1,2,1] 的和最大,为 6。

动态规划

function getMaxSumOfSubArray(arr) {
  // 储存 arr[i] 的尾的连续子数组的和
  const dp = [];
  dp[0] = arr[0];
  let max = dp[0];
  for (let i = 1; i < arr.length; i++) {
    // 如果dp[i - 1] + arr[i] 大,则累加,否则从当前索引重新开始
    dp[i] = Math.max(dp[i - 1] + arr[i], arr[i]);
    max = Math.max(max, dp[i]);
  }
  return max;
}

console.log(getMaxSumOfSubArray([-2,1,-3,4,-1,2,1,-5,4]))

暴力解法

function getMaxSumOfSubArray(arr) {
  let sum = arr[0];
  for (let i = 0; i < arr.length - 1; i++) {
    for (let j = i + 1; j < arr.length + 1; j++) {
      const subArray = arr.slice(i, j);
      sum = Math.max(
        sum,
        subArray.reduce((acc, cur) => acc + cur)
      );
    }
  }
  return sum;
}

时间复杂度: O(n^3)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

0 文章
0 评论
24 人气
更多

推荐作者

qq_eQNo9e

文章 0 评论 0

内心旳酸楚

文章 0 评论 0

mb_BlPo2I8v

文章 0 评论 0

alipaysp_ZRaVhH1Dn

文章 0 评论 0

alipaysp_VP2a8Q4rgx

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文