You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在twoSum函数满足条件时立即返回结果并解决编译错误?

问题:两数之和函数中找到目标值后立即返回结果

原始代码:

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条件成立时立即返回arr,不再执行后续循环。试过break但只能退出内层j的循环,外层i的循环仍会继续,该如何实现?

补充说明:之前尝试在if语句中用return,但出现编译错误,错误信息如下:

编译错误
第20行第5个字符:错误:非void函数未在所有控制路径中返回值 [-Werror,-Wreturn-type]
}
^
生成1个错误。


解决方法

方法一:直接在找到结果时return,保留末尾的return语句

编译错误的核心原因是编译器检测到存在函数无返回值的控制路径——如果你只在if里加了return,却删除了函数末尾的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; // 找到结果后立即返回
                }
            }
        }
        return arr; // 保证所有路径都有返回值,消除编译错误
      
    }
};

这种方法最直接,找到符合条件的数对后立刻返回结果,无需继续循环。

方法二:使用标志位终止外层循环

如果不想提前return,可以设置一个布尔标志位,找到结果后标记为true,跳出内层循环,再在外层循环的条件中判断标志位,终止外层循环:

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        
        int i = 0;
        vector<int> arr = {};
        bool found = false; // 用于标记是否找到结果

        for(;i<nums.size() && !found;i++){
            int j = i + 1;
            for(;j<nums.size();j++){
                if((nums[i] + nums[j]) == target){
                        arr.push_back(i);
                        arr.push_back(j);
                        found = true;
                        break; // 跳出内层循环
                }
            }
        }
        return arr;
      
    }
};

内容的提问来源于stack exchange,提问作者Seven

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 09:25:57