题解 | #连续子数组的最大和#

连续子数组的最大和

http://www.nowcoder.com/practice/459bd355da1549fa8a49e350bf3df484

思路:把dp数组处理好,遍历dp数组求最大值。最大值就是最大的子序和。

第一步:搞清楚dp数组以及下标的含义

新的dp数组的长度是原数组的长度,第一个元素是原数组的第一个元素。

那么这个dp[i]当中的i是什么意思呢?我们假设i等于1,就知道第一次的判断是dp数组的第一个元素(也就是原数组的第一个元素)和原数组的第二个元素相加。也就是说原数组的第一个数和第二个数加起来有没有比单独的第二个数大。如果有的话,dp数组的第二个数就把这个加和存进dp数组的第二个数。从而不难发现,dp数组里面的任意一个元素dp[i],都是以i结尾原数组的连续子数组的最大和。这里特别要注意必须是以i结尾的原数组,而且还是连续的。

这个i是指原数组的下标,也就是第i+1个元素。

第二步:递推公式

两种情况:情况一:

dp[i-1]和array[i]的和比array[i](i从1开始)的大:

dp[i]=do[i-1]+array[i]

情况二:

dp[i-1]和array[i]的和比array[i](i从1开始)的小:

dp[i]=array[i]

第三步:dp数组如何初始化

dp数组的第一个元素必须是原数组的第一个元素,然后根据递推公式赋值其余元素

第四步:遍历顺序

从前往后。符合思考的习惯。

全部评论

相关推荐

友友们,我实在是不太明白,校招的话现在大多也是提前实习,然后转正也是需要考核的,考核通过才能转正,那这跟实习转正有什么区别啊
苦闷的仰泳鲈鱼刷了1...:提前实习,是让你提前熟悉业务的,后续是入职后可以减少试用期的(大部分是包入职的);转正实习,要是hc不够或者其他原因,让你正式offer可能都没有,这个风险很大。 ---个人看法和了解到的。
点赞 评论 收藏
分享
昨天 22:54
武汉大学 Java
点赞 评论 收藏
分享
10-21 16:54
门头沟学院 Java
后端转测开第一人:微服务没用 校招都不看微服务的 还有就是后端行情是这样的 找实习纯看运气 秋招更是吃运气和缘分 如果对代码没有极致的追求 可以转测开
应届生简历当中,HR最关...
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务