LeetCode两数之和暴力解法报Non void function does not return any value问题
代码存在的3个核心问题
- 输出不符合题目要求:LeetCode两数之和题目明确要求返回两个元素对应的数组下标,你当前代码向返回容器中插入的是
*it、*it2即元素的数值本身,和判题系统预期的输出完全不匹配。 - 语法存在未定义行为:C++要求非void返回值的函数所有执行路径必须有返回值,你仅在找到匹配结果的分支内写了return逻辑,若循环结束未找到匹配(题目虽说明存在唯一解,但编译器无此前提认知),函数无返回值,会触发未定义行为。
- 类定义语法错误:C++类定义结束的右大括号后必须追加分号,你原始代码类定义结束后缺少分号,无法通过编译。
修正后可通过测试的暴力法代码
#include <vector> using namespace std; class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { int len = nums.size(); // 外层遍历第一个数的下标 for (int i = 0; i < len; i++) { // 内层遍历第二个数的下标,从i+1开始避免重复 for (int j = i + 1; j < len; j++) { if (nums[i] + nums[j] == target) { // 直接返回两个下标即可 return {i, j}; } } } // 补全返回路径,避免编译告警,题目保证有解不会走到这里 return {}; } };
内容的提问来源于stack exchange,提问作者Gaurav Singh
相关产品推荐
相关产品推荐

