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

cuxqih21  于 2024-01-09  发布在  其他
关注(0)|答案(1)|浏览(258)

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

11天前关闭
Improve this question

  1. class Solution {
  2. public:
  3. vector<int> twoSum(vector<int>& nums, int target) {
  4. int i = 0;
  5. vector<int> arr = {};
  6. for(;i<nums.size();i++){
  7. int j = i + 1;
  8. for(;j<nums.size();j++){
  9. if((nums[i] + nums[j]) == target){
  10. arr.push_back(i);
  11. arr.push_back(j);
  12. }
  13. }
  14. }
  15. return arr;
  16. }
  17. };

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

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


生成1个错误。

y1aodyip

y1aodyip1#

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

  1. class Solution {
  2. public:
  3. vector<int> twoSum(vector<int>& nums, int target) {
  4. int i = 0;
  5. vector<int> arr = {};
  6. for(;i<nums.size();i++){
  7. int j = i + 1;
  8. for(;j<nums.size();j++){
  9. if((nums[i] + nums[j]) == target){
  10. arr.push_back(i);
  11. arr.push_back(j);
  12. return arr; // What OP wants
  13. }
  14. }
  15. }
  16. return arr; // The compile error doesn't turn up
  17. }
  18. };

字符串

展开查看全部

相关问题