连续子数组的最大和
如果是连续的子数组, 那么对于数组中的每一个数nums[i]
, 都只有两个选项:
- 要么加上
nums[i]
- 要么从
nums[i]
重新开始.
那么每一步直接去最大的一个就可以.
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int n = nums.size();
int res = nums[0];
int ans = nums[0];
for (int i = 1; i < n; i ++)
{
res = max(res + nums[i], nums[i]);
ans = max(ans, res);
}
return ans;
}
};