讨论/综合讨论/遇到个奇怪的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;
}

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

展开讨论
十三羽扬发起于 2020-05-03
最近编辑于 2020-05-03
共 2 个讨论

不用全局变量试试

1

全局变量在函数入口再清零一次

1

leetcode的测试时候内存是重复使用的,全局变量不会再次初始化

1