解答过程:

使用动态规划

F(i):以array[i]为末尾元素的子数组的和的最大值,子数组的元素的相对位置不变

F(i)=max(F(i-1)+array[i] , array[i])

res:所有子数组的和的最大值

res=max(res,F(i))

如数组[6, -3, -2, 7, -15, 1, 2, 2]

初始状态:

F(0)=6

res=6

i=1:

F(1)=max(F(0)-3,-3)=max(6-3,-3)=3

res=max(F(1),res)=max(3,6)=6

i=2:

F(2)=max(F(1)-2,-2)=max(3-2,-2)=1

res=max(F(2),res)=max(1,6)=6

i=3:

F(3)=max(F(2)+7,7)=max(1+7,7)=8

res=max(F(3),res)=max(8,6)=8

i=4:

F(4)=max(F(3)-15,-15)=max(8-15,-15)=-7

res=max(F(4),res)=max(-7,8)=8

以此类推

最终res的值为8

代码很简洁:

public  int FindGreatestSumOfSubArray(int[] array) {

        int res = array[0]; //记录当前所有子数组的和的最大值

        int max=array[0];   //包含array[i]的连续数组最大值

        for (int i = 1; i < array.length; i++) {

            max=Math.max(max+array[i], array[i]);

            res=Math.max(max, res);

        }

        return res;

}

动态规划:连续子数组的最大和相关推荐

  1. 【动态规划】记录每步选择:牛客网:连续子数组的最大和(二)

    输入一个长度为n的整型数组array,数组中的一个或连续多个整数组成一个子数组,找到一个具有最大和的连续子数组. 1.子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等 ...

  2. 【剑指 offer】(31)—— 连续子数组的最大和(动态规划)

    题目:输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为 O(n)O(n). 例如,输入的数组为 {1, -2, 3, 10, ...

  3. 【最佳解法】剑指 Offer 42. 连续子数组的最大和

    我是小张同学,立志用最简洁的代码做最高效的表达 思路:动态规划 假设nums\textit{nums}nums 数组的长度是 nnn,下标从 000 到 n−1n-1n−1. 我们用 f(i)f(i) ...

  4. 【LeetCode】剑指 Offer 42. 连续子数组的最大和

    [LeetCode]剑指 Offer 42. 连续子数组的最大和 文章目录 [LeetCode]剑指 Offer 42. 连续子数组的最大和 一.动态规划 一.动态规划 状态定义 设动态规划列表 dp ...

  5. 剑指offer——面试题31:连续子数组的最大和

    剑指offer--面试题31:连续子数组的最大和 Solution1: 第一次做这道题.. 讲道理是这是标准的动态规划的题目,可是思路未完全想好. min_element(iterator, iter ...

  6. 剑指 Offer 42. 连续子数组的最大和(官解)

    14天阅读挑战赛 努力是为了不平庸~ 算法学习有些时候是枯燥的,这一次,让我们先人一步,趣学算法!欢迎记录下你的那些努力时刻(算法学习知识点/算法题解/遇到的算法bug/等等),在分享的同时加深对于算 ...

  7. 剑指 Offer 42. 连续子数组的最大和

    摘要 剑指 Offer 42. 连续子数组的最大和 一. 动态规划分析 1.1 动态规划思路分析 假设nums数组的长度是n,下标从0到n−1.我们用 f(i)代表以第i个数结尾的连续子数组的最大和, ...

  8. 连续子数组的最大和Java

    目录 题目要求 实现思路 代码展示 代码讲解 总结 题目要求 在一个数组中,找到连续子数组的最大和.重点是1.连续 2.最大 3.和.我们把它翻译成人话,举个例子:arr=[1, -2, 3, 1]. ...

  9. 连续子数组的最大和python_连续子数组的最大和

    题目:输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整数组成一个子数组.求元素和值最大的那个子数组的和值. C#实现:public static int FindGreatestSum ...

  10. 《剑指offer》-- 复杂链表的复制、字符串的排列、数组中出现次数超过一半的数字、连续子数组的最大和

    一.复杂链表的复制: 参考牛客网的chancy:https://www.nowcoder.com/questionTerminal/f836b2c43afc4b35ad6adc41ec941dba 1 ...

最新文章

  1. python上海培训哪里比较好-python培训班上海哪里比较好?
  2. SAP CRM One Order OB,OW和DB buffer的调用关系图
  3. android p wifi一直在扫描_Android再次解读萤石云视频
  4. Linux下定时切割nginx日志并删除指定天数前的日志记录
  5. 在MATLAB中快速画圆(给出圆心坐标和半径就能直接画的那种)
  6. 三阶魔方学习(新手入门)
  7. java 全量_七、通过java代码实现增量、全量索引
  8. c语言pow函数算力,c语言pow函数算力
  9. 终于把所有的 Python 库都整理出来啦
  10. TextView字体加粗
  11. JavaScript刷LeetCode拿offer-贪心算法
  12. 如何分别是32位微型计算机,32位微型计算机中的32指的是啥
  13. 苹果CMS完全开发文档 - 苹果CMS手册 - 苹果CMS教程 - 苹果CMS帮助 - 苹果cmsV10
  14. 如何尽量不用百度等远离流氓软件随笔
  15. 《蜘蛛侠:平行宇宙》的视觉解析与滤镜实现
  16. R语言使用多个数据类型不同的向量数据创建一个dataframe数据对象、使用[]操作符和列名称访问dataframe指定数据列的数据(dataframe column data)
  17. R语言统计—频数统计
  18. Lora和Zigbee无线通讯技术的对比(哪种技术更适合物联网连接)
  19. Win7 下如何注册OCX控件 。0x80040200错误。
  20. 说说百度与google的搜索结果

热门文章

  1. CentOS6.5下Nginx1.7.4安装记录
  2. AS问题解决系列1—Unable to execute DX错误
  3. TortoiseSVN status cache占用CPU高
  4. WinRAR 注册方法
  5. 使用Installshield制作asp,asp.net应用的安装程序
  6. Java调用Matlab程序
  7. js如何判断当前页面是否处于激活状态
  8. C++中int与string的相互转换
  9. Hyperledger Fabric相关文件解析
  10. 修改ubuntu的sources.list源