当前位置: 首页 > 知识库问答 >
问题:

如果数组中任意元素的和等于给定值,则检查数组

孙玮
2023-03-14
[1,2,3,6], 3 = True <== 1+2=3
[1,2,3,6], 9 = True <== 3+6=9
[1,2,3,6], 5 = True <== 2+3=5
[1,2,3,6], 10 = False <== 1+2, 2+3, 3+6, 6+1 not equal to 10
[6,2,3,1], 10 = False <== 6+2, 2+3, 3+1, 1+6 not equal to 10
[6,3,3,1], 6 = True <== 3+3=6

如果给定的和等于数组中任意两个元素的和,函数需要返回true;否则函数需要返回false。

共有3个答案

端木澄邈
2023-03-14

您可以使用函数一些来检查至少一个操作是true

这种方法遵循您的用例

let check = (sum, arr) => arr.concat(arr[0]).some((n, i, a) => (n + a[i+1]) === sum);
    
console.log(check(3, [1,2,3,6]));
console.log(check(9, [1,2,3,6]));
console.log(check(5, [1,2,3,6]));
console.log(check(10, [1,2,3,6]));
console.log(check(10, [6,2,3,1]));
console.log(check(6, [6,3,3,1]));
console.log(check(7, [3,1,2,4]));
console.log(check(7, []));
.as-console-wrapper { max-height: 100% !important; top: 0; }
牧信厚
2023-03-14

您必须遍历值数组。不熟悉javascript,以下是java函数中的代码:

public boolean checkSum(){
  int sumValue = 10; //value you want to check, could be passed in as a parameter
  int arr[4] = {1,2,4,6};
  for (int n = 0; n < arr.length; n++){
    for (int x = 0; x < arr.length; x++){
      if ( (arr[n] + arr[x] == sumValue) && (n != x) ){ //need to ensure same slot is being added
        return true;
      }
    }
  }
  return false;
}

希望这能有所帮助!

容柏
2023-03-14

这里有一个非常简单的方法来检查数组中的两个数字是否等于一个值。注意,这只允许不同的和(与自身相加的数字不计算)。

function test(n, arr){
   return arr.some((item, i) => arr.slice(i+1).includes(n-item))
}

let arr = [1, 2, 3, 6]

console.log(test(5, arr))   // true 2+3
console.log(test(4, arr))   // true 1+3
console.log(test(12, arr))  // false because 6 + 6 doesn't count
console.log(test(10, arr))  // false no sums
 类似资料:
  • 问题陈述 任务是检查在长度为N的数组中是否存在K个元素的非连续子数组,其总和等于给定的总和。 例如, 长度为 3 且 sum=7 的非连续子数组为 [1,2,4]。 限制条件: 输出 如果存在 sum=TargetSum 的子数组,我们必须返回 True,如果不可能,则必须返回 False。

  • 在Javascript中,还有其他有效的方法来实现此任务吗? 我尝试的身份是: 这里输出:

  • 设计一个算法,给定一组n个整数和另一个整数x,确定是否存在k(n 我一直在为面试做准备,我遇到了这个算法。我已经解决了问题中指定k的问题。比如2或3。但是我找不到任何可能存在的k的答案。我尝试过用动态规划来解决它,但没有得到结果。有人能帮我吗?

  • int main(void) { int array[201]; int i; for (i = 0; i < 201; i++) array[i] = i; return 0; } 技巧 在gdb中,如果要打印数组中任意连续元素的值,可以使用“p array[index]@num”命令(p是print命令的缩写)。其中index是数组索引(从0开始计数),num是连

  • 我在一次采访中被问到以下问题。虽然我用n元树回答了这个问题,但有人告诉我这还不够好。所以,我很好奇,什么是它的最佳解决方案。 输入:整数数组:[2,3,7]和总和:10 输出:加起来等于和的所有数组元素组合(例如2、2、3、3、7等) 谢了小泰

  • 我正在进行JavaScript会话。在我的编码练习中找到此代码。我理解逻辑,但我没有得到这个map[nums[x]]条件。 我试图从一个指定的数组中获取元素对,该数组的和等于一个特定的目标数。我已经写了下面的代码。 有没有比上述两种解决方案更优化的方法?有人能解释第一种解决方案吗?这个条件到底指的是什么映射[nums[x]]?