题目:最大子数组和

核心判断条件:

如果前一段子序列之和与当前元素相加之后,还没有当前元素本身大,那么就直接从当前元素开始重新计算

具体实现:

首先定义两个和,一个用于记录目前为止的最大和(max_val),一个用于在循环中进行判断(curr_val)

之后进入循环,通过上述判断条件对当前最大和进行更新,再用当前最大和与之前保持的最大和进行比较

maxSubArray()

 1int maxSubArray(vector<int>& nums)
 2{
 3    int curr_val = nums[0];
 4    int max_val = nums[0];
 5
 6    for(int i = 1; i < nums.size(); i++)
 7    {
 8        if(curr_val + nums[i] < nums[i])
 9            curr_val = nums[i];
10        else
11            curr_val = curr_val + nums[i];
12
13        if(curr_val > max_val)
14            max_val = curr_val;
15    }
16    return max_val;
17}

来源:语雀原笔记