int maxSubArray(int* nums, int numsSize) {
if (numsSize == 0)
return 0;
int max_num = nums[0];
int pre = 0;
int min_pre = 0;
for (int i = 0; i < numsSize; i++) {
pre += nums[i];
if (pre - min_pre > max_num)
max_num = pre - min_pre;
if (pre < min_pre)
min_pre = pre;
}
return max_num;
}
超时解答:
cpp复制代码
#define Max(a,b) ((a>=b)?a:b)
int maxSubArray(int* nums, int numsSize) {
if (numsSize == 0)
return 0;
int max = nums[0];
int cnt[numsSize+1]={};
for(int i=0;i<numsSize;i++){
cnt[i+1]=cnt[i]+nums[i];
}
for(int i=1;i<=numsSize;i++){//O(n^2)
for(int j=0;j<i;j++){
int n=cnt[i]-cnt[j];
max=Max(max,n);
}
}return max;
}