资讯动态

【题目练习】最大子数和

发布时间:2026/9/27 23:22:56 来源:尧图企业网站定制
题目描述解题过程运行结果思路先看题1、连续不能跳元素[4,-1,2,1]可以[4,2,1]跳过 - 1 不行。2、子数组最少 1 个元素数组全负数时不能返回 0要返回最大那个负数。3、求子数组元素相加的总和最大。思考每次都会很多次重复能不能利用重复的部分进行下一轮的计算。这样就不会重复计算。以 nums [i] 结尾的连续子数组最大和是多少必须以 nums [i] 结尾因为连续子数组到 i 为止。或者1把 nums [i] 接到【以 i-1 结尾的最大子数组】后面2前面那一段拖累我我不要前面所有子数组就从 nums [i] 自己开始举个例子i3nums [i]4以 i-1也就是 - 3结尾的最大子数组和是 -2。-2 4 2。对比直接取 4 自己。max(2,4)4所以以 4 结尾的最大子数组和是 4。所以dp [i]以 i 位置元素结尾的最大连续子数组和。答案来历dp 数组保存每一个位置结尾的最大子数组和。整个数组的答案就是 dp 数组里面所有值的最大值。因为最大子数组一定是以某个位置 i 结尾的。样例 dp 数组[-2,1,-2,4,3,5,6,1,5]里面最大值就是 6。自己思考进行计算数组[-2, 1, -3, 4, -1, 2, 1, -5, 4]初始化pre0maxSumINT_MINi0数字 -2思考pre 现在是上一轮 dp初始 0。Apre (-2) -2 B直接取当前 - 2。max (-2,-2)-2。pre 更新成 - 2。现在这个 pre-2是 dp [0]。拿它和 maxSum (极小值) 比较maxSum 变成 - 2。i1数字 1思考pre-2dp [0]。A-21 -1B1。max (-1,1)1。pre 更新为 1。dp [1]1。对比 maxSum (-2)maxSum 更新成 1。i2数字 -3思考pre1dp [1]A:1 (-3) -2B:-3。max (-2,-3) -2。pre-2。dp [2]-2。对比 maxSum (1)1 更大maxSum 不变。i3数字 4思考pre-2dp [2]A: -2 4 2B:4。max (2,4)4。pre4。dp [3]4。对比 maxSum (1) → maxSum4。等等......循环结束返回 maxSum6总结遍历数组对每一个位置只看以这个位置结尾的连续子数组最大和利用上一轮的结果pre每一轮都更新全局最大值。如果前面累加的结果是负数就直接抛弃前面从当前数字重新开始。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑