代码展示
class Solution { public: int maxSubArray(vector<int>& nums) { int result = INT_MIN; // 初始化结果为最小可能的整数 int sum = 0; // 初始化当前子数组和为0 // 遍历数组中的每一个元素 for (int i = 0; i < nums.size(); i++) { sum += nums[i]; // 将当前元素加入到当前子数组和中 // 如果当前子数组和大于结果,更新结果 if (sum > result) { result = sum; } // 如果当前子数组和小于等于0,则重置当前子数组和为0 if (sum <= 0) { sum = 0; } } return result; // 返回最大子数组和 } };
代码解释
初始化:
result
初始化为INT_MIN
,用于存储当前找到的最大子数组和。sum
初始化为0,表示当前子数组的和。遍历数组:
- 对于每个元素
nums[i]
,将其添加到sum
中。- 如果
sum
大于result
,则更新result
为sum
。这表示当前子数组和是我们迄今为止找到的最大子数组和。- 如果
sum
小于等于0,则将sum
重置为0。这是因为如果当前子数组和为负数或零,则将其继续添加到后续的子数组中不会增加和的值,所以应该从下一个元素重新开始计算新的子数组和。返回结果:
- 返回
result
,即最大子数组和。