【问题标题】:Take a value in array1, a value in array2, see if the sum is equal to target value取array1中的一个值,array2中的一个值,看和是否等于目标值
【发布时间】:2020-02-29 08:38:01
【问题描述】:

问题:你有两个整数数组,a 和 b,以及一个整数目标值 v。确定是否存在一对数,其中一个数取自 a,另一个取自 b,可以相加成得到 v 的总和。

输入:

sumOfTwo([1, 2, 3], [10, 20, 30, 40], 42)

输出:return true if a pair exists, else return false

请看我下面的代码:

function sumOfTwo(a, b, v) {
            var correctArr = [];
            var sum = 0;
            for (var i = 0; i < a.length; i++) {
                for (var j = 0; j < b.length; j++) {
                    sum = a[i] + b[j];
                    if(sum === v){
                        console.log("bingo");
                        return true;
                    }
                }
            }
        }

我的问题是,如果我只是将 else 语句更改为 return false,我将无法执行 return false 部分。

谁能帮忙看看我的代码有什么问题?

【问题讨论】:

  • return false放在函数末尾?
  • 是的。在最后添加一个 return false 可以解决它。谢谢

标签: javascript algorithm


【解决方案1】:

您需要在函数末尾添加return 语句以返回定义的值。


通过对数组进行排序,如果总和大于所需总和,您可以添加短路并省略进一步的迭代。

function sumOfTwo(a, b, v) {
    var correctArr = [],
        sum = 0;

    for (var i = 0; i < a.length; i++) {
        for (var j = 0; j < b.length; j++) {
            sum = a[i] + b[j];
            if (sum === v) return true;
            if (sum > v) break;
        }
    }
    return false;
}

console.log(sumOfTwo([1, 2, 3], [10, 20, 30, 40], 42)); // true
console.log(sumOfTwo([1, 2, 3], [10, 20, 30, 40], 25)); // false

【讨论】:

    【解决方案2】:

    你可以在 for 循环之后返回 false。所有的计算都完成了,如果有匹配,你确定输出将是true

    function sumOfTwo(a, b, v) {
      var correctArr = [];
      var sum = 0;
      for (var i = 0; i < a.length; i++) {
          for (var j = 0; j < b.length; j++) {
              sum = a[i] + b[j];
              if(sum === v){
                  console.log("bingo");
                  return true;
              }
          }
      }
      return false;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-31
      • 2020-09-08
      • 1970-01-01
      • 1970-01-01
      • 2021-03-08
      • 2021-09-03
      相关资源
      最近更新 更多