讨论/综合讨论/遇到个奇怪的bug,今天的每日(53. 最大子序和) 写的一段代码,执行和提交的结果不同。(解决了)/
遇到个奇怪的bug,今天的每日(53. 最大子序和) 写的一段代码,执行和提交的结果不同。(解决了)

B13S_]92D}``{OQ0JCM1P{O.png

我以前没写过C,是全局变量的定义有问题吗?还是说别的什么原因?

int maxAns = -2147483648;
int maxSubArray(int* nums, int numsSize){
    maxSubSum(nums,numsSize-1,numsSize);
    return maxAns;
}

int maxSubSum(int* nums, int index,int numsSize){
    if (index == 0){
            maxAns = fmax(maxAns,nums[0]);
            return nums[0];
        }
    int pre  = maxSubSum(nums,index-1,numsSize);
    pre = fmax(pre+ nums[index],nums[index]);
    maxAns = fmax(maxAns,pre);
    return pre;
}

全局变量在方法内部初始化一下就好了,不然会被反复使用不会再次初始化。

展开讨论

不用全局变量试试

1
展开全部 2 讨论