c++ 如何在条件为真时立即返回输出?[关闭]

cuxqih21  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(191)

已关闭。此问题需要details or clarity。目前不接受回答。
**要改进此问题吗?**通过editing this post添加详细信息并阐明问题。

11天前关闭
Improve this question

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        
        int i = 0;
        vector<int> arr = {};

        for(;i<nums.size();i++){
            int j = i + 1;
            for(;j<nums.size();j++){
                if((nums[i] + nums[j]) == target){
                        arr.push_back(i);
                        arr.push_back(j);
                        
                }
            }
        }
        return arr;
      
    }
};

我想在if条件为真时立即返回repeat,并且循环不会提前执行repeat。我尝试使用break,但它只针对i和j的值退出循环,然后针对i的其余值继续执行。我怎么可能做到这一点呢?
编辑:很多用户说在if语句中使用return,我已经尝试过了,下面是错误:

Compile Error
Line 20: Char 5: error: non-void function does not return a value in all control paths [-Werror,-Wreturn-type]
}
^


生成1个错误。

y1aodyip

y1aodyip1#

push_back调用之后,在if条件中添加return arr;语句。同时,保留最后的return arr;语句,以便代码中的所有控制流都将返回向量。
最后一个函数应该是这样的:

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        
        int i = 0;
        vector<int> arr = {};

        for(;i<nums.size();i++){
            int j = i + 1;
            for(;j<nums.size();j++){
                if((nums[i] + nums[j]) == target){
                        arr.push_back(i);
                        arr.push_back(j);
                        return arr; // What OP wants
                }
            }
        }
        return arr; // The compile error doesn't turn up
      
    }
};

字符串

相关问题