剑指 Offer——连续子数组的最大和
Posted seniusen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指 Offer——连续子数组的最大和相关的知识,希望对你有一定的参考价值。
1. 题目
2. 解答
初始化 sum=0,然后遍历数组进行累加。如果 sum 变为负数,也就说再继续累加的话贡献为负,我们需要更新 sum=0,重新开始累加。
初始化 max_sum 为数组的第一个元素,之所以不初始化为零,就是防止出现数组中全为负数的情况,比如 [-2, -1, -3, -4, -5]。在遍历数组的过程中,如果 sum > max_sum,就更新 max_sum=sum,最后 max_sum 即为所求。
class Solution {
public:
int FindGreatestSumOfSubArray(vector<int> array) {
int n = array.size();
int sum = 0;
int max_sum = array[0];
for (int i = 0; i < n; i++)
{
sum += array[i];
if (sum > max_sum) max_sum = sum;
if (sum < 0) sum = 0;
}
return max_sum;
}
};
获取更多精彩,请关注「seniusen」!
以上是关于剑指 Offer——连续子数组的最大和的主要内容,如果未能解决你的问题,请参考以下文章