LeetCode求二进制数组连续1最大个数代码报错问题咨询
问题原因及解决方法
错误原因
你遇到的报错error: control reaches end of non-void function本质是:
- 函数
findMaxConsecutiveOnes声明为返回int类型,但代码执行到函数末尾时没有返回任何值,仅用printf打印了结果。 - LeetCode的编译环境将这类不符合规范的写法直接视为错误(通过
-Werror=return-type参数强制),因此触发报错;而CodeBlocks默认未开启该严格检查,所以能运行,但这属于违反C语言标准的写法。
修正后的代码
把末尾的printf("%d", max);替换为返回语句即可(LeetCode需要函数返回结果而非打印):
int findMaxConsecutiveOnes(int* nums, int numsSize){ int counter = 0; int max = 0; for(int i =0; i < numsSize; i++){ if(nums[i] == 1){ counter++; } else{ counter = 0; } if(counter > max){ max = counter; } } return max; }
补充说明
LeetCode的判题逻辑依赖函数的返回值来验证答案,因此不需要printf语句,直接返回计算好的连续1的最大个数即可。
内容的提问来源于stack exchange,提问作者Mohammad Bakeer
相关产品推荐
相关产品推荐

