这道题最后的思路是对前i个元素求和,如果加上某个元素时和变为负数,就说明这个数比前i个元素所提供的“加数”更大 ,所以记录一个临时最大值,再从i+1重新累加。
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int x = INT_MIN;
int temp = 0;
for (int i = 0; i < nums.size(); i++)
{
temp += nums[i];
if (temp > x)
{
x = temp;
}
if (temp <= 0)
{
temp = 0;
}
}
return x;
}
};