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