前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【剑指offer】连续子数组的最大和

【剑指offer】连续子数组的最大和

作者头像
ConardLi
发布2019-05-23 22:40:22
4760
发布2019-05-23 22:40:22
举报
文章被收录于专栏:code秘密花园code秘密花园

本系列是《剑指offer》或leetcode的JavaScript版本。 每期1-2个算法,也有可能是一个类别。 文章包括题目、思路以及代码。

题目

HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。

今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。

但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?

例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。

给一个数组,返回它的最大连续子序列的和,你会不会被他忽悠住?(子向量的长度至少是1)

思路

1.记录当前累加值,累加最大值

2.遍历数组---当前值

3.累加值小于0,对后面的累加序列就没有贡献了,累加值重置为当前值

4.累加值大于0,累加值+=当前值

5.最大值和累加值比较,取最新的最大值

代码

代码语言:javascript
复制
    function FindGreatestSumOfSubArray(array) {      if (!array || array.length === 0) {        return 0;      }      let sum = array[0];      let max = array[0];      for (let i = 1; i < array.length; i++) {        if (sum < 0) {          sum = array[i];        } else {          sum += array[i];        }        if (sum > max) {          max = sum;        }        console.log(array[i], sum, max);      }      return max;    }
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 code秘密花园 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目
  • 思路
  • 代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档