相关推荐

C语言求连续最大子数组和的方法

主要介绍了C语言求连续最大子数组和的方法,包含了数组的常见操作及相关技巧,需要的朋友可以参考下

weixin_38579899

【华为OD技术面试手撕真题】108、几乎唯一子数组的最大和 | 手撕真题+思路参考+代码解析(C & C++ & Java & Python & JS)

【华为OD技术面试手撕真题】108、几乎唯一子数组的最大和 | 手撕真题+思路参考+代码解析(C & C++ & Java & Python & JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2025e卷,od机试,2025E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,202

KJ.JK

【华为OD技术面试手撕真题】109、长度为 K 子数组中的最大和 | 手撕真题+思路参考+代码解析(C & C++ & Java & Python & JS)

【华为OD技术面试手撕真题】109、长度为 K 子数组中的最大和 | 手撕真题+思路参考+代码解析(C & C++ & Java & Python & JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2025e卷,od机试,2025E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,

KJ.JK

数组中最大和的子数组

求元素组合成连续子数组之和最大的子数组,要求时间复杂度为O(n)

阳光岛主

连续子数组的最大和

从头到尾逐个累加示例数组中的每个数字。初始化和为0,第一步加上第一个数字1,此时和为1。接下来第二步加上数字-2,和就变成了-1.第三步加上数字3。注意到由于此前累计的和是-1,小于0,那如果用-1加上3,得到的和是2,比3本身还小。也就是说从第一个数字开始的子数组的和会小于从第三个数字开始的子数组的和。因此我们不用考虑从第一个数字开始的子数组,之前累计的和也被抛弃。 我们从第三个数字重新开始累加,此时得到的和是3.接下来第四步加10,得到和为13。第五步加上-4,和为9。我们发现由于-4是一个负数,因此累加-4之后得到的和比原来的和还要小。因此我们要把之前得到的和13保持下来,它有可能是最大的子数组的和。第六步加上数字7,9加7的结果是16,此时和比之前最大的和13还要大,把最大的子数组的和由13更新为16.第七步加上2,累加得到的和为18,同时更新最大的子数组的和。第八步加上最后一个数字-5,由于得到的和为13,小于此前最大和18,因此最终最大的子数组的和为18,对应的子数组是{3,10,-4,7,2}。

jingxianli0922
评论
收藏 已收藏
分享
返回顶部