题目:最大子数组和
如果前一段子序列之和与当前元素相加之后,还没有当前元素本身大,那么就直接从当前元素开始重新计算
首先定义两个和,一个用于记录目前为止的最大和(max_val),一个用于在循环中进行判断(curr_val)
之后进入循环,通过上述判断条件对当前最大和进行更新,再用当前最大和与之前保持的最大和进行比较
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}
来源:语雀原笔记