在c+以下运行+;程序 我最近开始用C++编写代码,当我运行代码时,它运行得很好, class Solution { public: vector<int> twoSum(vector<int> &numbers, int target){ vector<int> result; for (int i = 0; i < numbers.size(); i++) { for (int j =i+1 ; j<numbers.size(); j++){ if (numbers[j] == target - numbers[i]){ result.push_back (i); result.push_back (j); } } } return result; } };
我不知道为什么,因为两者都是一样的在c+以下运行+;程序 我最近开始用C++编写代码,当我运行代码时,它运行得很好, class Solution { public: vector<int> twoSum(vector<int> &numbers, int target){ vector<int> result; for (int i = 0; i < numbers.size(); i++) { for (int j =i+1 ; j<numbers.size(); j++){ if (numbers[j] == target - numbers[i]){ result.push_back (i); result.push_back (j); } } } return result; } };,c++,C++,我不知道为什么,因为两者都是一样的 class Solution { public: vector<int> twoSum(vector<int> &numbers, int target){ vector<int> result; for (int i = 0; i < numbers.size(); i++) { for (int j =i+1 ; j<numbers.si
class Solution {
public:
vector<int> twoSum(vector<int> &numbers, int target){
vector<int> result;
for (int i = 0; i < numbers.size(); i++) {
for (int j =i+1 ; j<numbers.size(); j++){
if (numbers[j] == target - numbers[i]){
result.push_back (i);
result.push_back (j);
return result;
}
}
}
}
};
类解决方案{
公众:
向量twoSum(向量和数字,整数目标){
矢量结果;
对于(int i=0;i 对于(int j=i+1;j两个代码不相同
在第一个代码中,return
语句放在嵌套的for循环之后,以便在调用函数twoSum()
时始终执行该语句
但是,在第二个代码示例中,return
语句包含在if
语句中,因此仅在if
语句中的条件为statisfied时执行
因此,从编译器的角度来看,if
语句中的表达式可能永远不会计算为true
,因此return
语句可能永远不会执行
您可以通过在函数末尾添加return
语句来更正第二个代码,就像在第一段代码中一样。对于第二个代码示例,错误是正确的。如果向量的大小为0,函数将返回什么?它们也可能会产生不同的结果。我的意思是,第二个函数在第一个o上退出函数if条件为true时发生。它们不相同,一个在函数末尾有一个返回
,另一个只在if语句中返回,因为函数应该返回一个值,下面的代码仅在满足条件时返回。如果该条件从未通过,则函数如果第二个示例中的If
从未计算为true,则函数不会返回值如果If
语句一直失败,它将不返回任何值,但非void函数应返回一些值惯性导航与制导。