热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

53  给定一个整数数组,找到一个具有最大和的连续子数组,返回其最大和

点击此处返回总目录【题目】【方法一】求和最大的一段nums[a]nums[b]最大,即sum[b]-sum[a-1]最大。我们先来求出sum数组。sum[i]为

                                                                                                                                       点击此处返回总目录

 

 

【题目】

 

【方法一】

求和最大的一段nums[a]+...+nums[b]最大,即sum[b] - sum[a-1]最大。

我们先来求出sum数组。sum[i]为从前i项和。

原数组:[-2,  1,  -3,  4,  -1,  2,  1,  -5,  4]

累加和:[-2, -1,  -4,  0,  -1,  1,  2,  -3,  1]

现在的问题是,前面找一个数i,后面找一个数j,使得两数之差sum[j]-sum[i]最大。这就类似于121题,求股票的最大收益,前面找一个值买入,后面找一个值卖出,然后求最大收益。

不过这里有点不一样,就是如果都是正数,如3,2,4,8,1。最好的结果为8,不是8-2=6。所以,如果前面的数是正数,减去一个正数会变小,不如不减。只有前面是负数的时候,减去一个负数会变大。因此,可以设初试的min=0。

 

dp式子:

前i项的最大值 = max{前i-1项的最大值,sum[i]-min}

 

代码:

 

结果:

 

 

 

【方法二】

dp[i]表示以第i个元素为结尾的连续子数组的最大和。

以第i个元素为结尾的最大和 = max{只有自己一个元素nums[i],以第i-1为结尾的最大和+nums[i]}。因此:

if(dp[i-1]<0){

     dp[i] &#61; nums[i];

}else{

     dp[i] &#61; dp[i-1]&#43;nums[i];

}

 

举例&#xff1a;

原数组&#xff1a;[-2,  1,  -3,  4,  -1,  2,  1,  -5,  4]

dp[0]   &#xff1a;[-2,                                          ]     //dp[0]&#61;-2

dp[1]   &#xff1a;[-2,  1                                      ]     //因为dp[0]&#61;-2&#xff0c;所以以1结尾的最大的和&#xff0c;不如不加前面的负数。

dp[2]   &#xff1a;[-2,  1,  -2                                ]     //dp[1]&#61;1&#xff0c;所以dp[2] &#61; 1&#43;nums[2]

dp[3]   &#xff1a;[-2,  1,  -2,  4                           ]

dp[4]   &#xff1a;[-2,  1,  -2,  4,  3                      ]

dp[5]   &#xff1a;[-2,  1,  -2,  4,  3,  5                 ]

dp[6]   &#xff1a;[-2,  1,  -2,  4,  3,  5,  6            ]

dp[7]   &#xff1a;[-2,  1,  -2,  4,  3,  5,  6,  1       ]

dp[8]   &#xff1a;[-2,  1,  -2,  4,  3,  5,  6,  1,  5  ]

 

结果为dp[6]&#61;6。

 

代码&#xff1a;

 

结果&#xff1a;

 

 

 

 

 


推荐阅读
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 判断数组是否全为0_连续子数组的最大和的解题思路及代码方法一_动态规划
    本文介绍了判断数组是否全为0以及求解连续子数组的最大和的解题思路及代码方法一,即动态规划。通过动态规划的方法,可以找出连续子数组的最大和,具体思路是尽量选择正数的部分,遇到负数则不选择进去,遇到正数则保留并继续考察。本文给出了状态定义和状态转移方程,并提供了具体的代码实现。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 本文介绍了C++中省略号类型和参数个数不确定函数参数的使用方法,并提供了一个范例。通过宏定义的方式,可以方便地处理不定参数的情况。文章中给出了具体的代码实现,并对代码进行了解释和说明。这对于需要处理不定参数的情况的程序员来说,是一个很有用的参考资料。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 2020年第十一届蓝桥杯决赛JAVA B G题“皮亚诺曲线距离“的个人题解目录
    本文是2020年第十一届蓝桥杯决赛JAVA B G题“皮亚诺曲线距离“的个人题解目录。文章介绍了皮亚诺曲线的概念和特点,并提供了计算皮亚诺曲线上两点距离的方法。通过给定的两个点的坐标,可以计算出它们之间沿着皮亚诺曲线走的最短距离。本文还提供了个人题解的目录,供读者参考。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • 摘要: 在测试数据中,生成中文姓名是一个常见的需求。本文介绍了使用C#编写的随机生成中文姓名的方法,并分享了相关代码。作者欢迎读者提出意见和建议。 ... [详细]
author-avatar
天人景观2010
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有