bool largestSumSubarray(int L, int length){
if(L == NULL || length == 0) return false;
int sum=cur_sum=0;
for(int i=0 ; i<length ; ++i){
cur_sum += L[i];
if(cur_sum <= 0) //如果某个加和都小于0,那么直接从后面重新开始肯定比保存这里更大
cur_sum = 0;
sum = max(cur_sum , sum);
}
if(sum = 0){
sum=L[0];
for(int i = 1;i < L.lenght; ++i)
sum=max(sum,L[i]);
}
printf("%d",sum);
return true;
}
-
为什么返回的是布尔变量?
当我们输入一个空指针应该返回什么?0?无法区别无效数组和最大数组为0的情况
-
考虑所有都是负值的边界情况,因为初始值为0