
解题思路:贪心
局部最优:当前连续数组的和为负数时重新计数
全局最优:整个数组以正数开头的最大数值相连
1.设立两个变量result和curMax。result初始化为INT_MIN,记录之前的最大值,curMax记录当前最大值。当curMax>preMax时,更新result
2.遍历数组,curMax+=nums[i]:
a.如果curMax大于result,将result设置为curMax
b.如果curMax小于0,则将curMax重置为0(因为负数加另一个数不可能更大)
int maxSubArray(int* nums, int numsSize){
int result = INT_MIN;
int i;
int curMax = 0;
for(i = 0; i < numsSize; ++i) {
curMax += nums[i];
if(curMax > result)
result = curMax;
if (curMax < 0) {
curMax = 0;
}
}
return result;
}
