首页 > 解决方案 > 在一个数组中找到一个三元组,该数组总和为javascript中的给定值

问题描述

我正在尝试在 JavaScript 中解决这个问题:给定一个数组和 JavaScript 中的一个值,查找数组中是否存在一个三元组,其总和等于给定值。如果数组中存在这样的三元组,则打印三元组并返回 true。否则返回假。

现在,我写了一些代码,但由于某种原因,它不能正常工作。这是代码:

A = [1, 4, 45, 6, 10, 8];
sum = 15;
x = A.length;


function find3Numbers(A, x, sum) {
for (i=0; i<(x-2); i++) {
for (j=i+1; j<(x-1); j++) {
for (k=j+1; x; k++) {
   if (A[i] + A[j] + A[k] == sum) {
     console.log(A[i]);
     console.log(A[j]);
     console.log(A[k]);
     return true
    }
   return false
    }
  }
 }
} 

 console.log(find3Numbers(A, x, sum));

现在,当我运行代码时,我收到一条“错误”消息。任何想法,为什么会这样?

标签: javascriptarrays

解决方案


false如果您尝试的第一个三元组不匹配,您将立即返回,而您应该在所有循环完成后才这样做。

A = [1, 4, 45, 6, 10, 8];
sum = 15;
x = A.length;


function find3Numbers(A, x, sum) {
  for (i = 0; i < (x - 2); i++) {
    for (j = i + 1; j < (x - 1); j++) {
      for (k = j + 1; x; k++) {
        if (A[i] + A[j] + A[k] == sum) {
          console.log(A[i]);
          console.log(A[j]);
          console.log(A[k]);
          return true
        }
      }
    }
  }
  return false;
}

console.log(find3Numbers(A, x, sum));


推荐阅读