【发布时间】:2021-01-30 02:53:30
【问题描述】:
这是来自 leetcode 教程中的问题之一,它要求:
给定一个整数数组 arr,检查是否存在两个整数 N 和 M,使得 N 是 M 的双倍(即 N = 2 * M)。
这是我尝试的解决方案:
class Solution {
public:
bool checkIfExist(vector<int>& arr) {
for(int i = 0; i < arr.size(); i++){
for(int j = 0; j < i; j++){
if (arr[i] == 2*arr[j]){
return true;}
}
}
}
};
我最终得到了错误:
Line 10: Char 1: error: non-void function does not return a value in all control paths [-Werror,-Wreturn-type]
}
^
1 error generated.
我在这里做错了什么?
编辑: 我按照建议通过添加 return false 语句来修复错误,并且还修复了 j 上的循环以运行直到 arr.size()。但是 leetcode 仍然不会接受我的解决方案。它通过了编译测试,但没有通过提交:
那现在怎么样了?它不识别数组中的负值吗?抱歉,如果这些都是非常愚蠢的问题,我一般对编程还是比较陌生,感觉我应该提到这一点。
【问题讨论】:
-
函数右括号前需要
return false;。 -
感谢您指出这一点!我也意识到我应该让 j 上的循环一直运行到 arr.size(),我很傻。