gpt4 book ai didi

javascript - Coderbyte 数组相加解决方案——for循环与for循环

转载 作者:行者123 更新时间:2023-11-30 06:26:58 24 4
gpt4 key购买 nike

我试图理解 Array Addition CoderByte 问题的解决方案中的逻辑。这是问题提示——“使用 JavaScript 语言,让函数 ArrayAdditionI(arr) 获取存储在 arr 中的数字数组,如果数组中的任意数字组合相加等于最大数字,则返回字符串 true在数组中,否则返回字符串 false。例如:如果 arr 包含 [4, 6, 23, 10, 1, 3],则输出应返回 true,因为 4 + 6 + 10 + 3 = 23。数组不会空,不会包含所有相同的元素,并且可能包含负数。”

这是一个可行的解决方案,但我在 for 循环中的 for 循环中迷失了方向。为什么 i = j 不总是这样,因为 for 循环的计数器都从 0 开始。所以它不总是 0 = 0 吗?

  function ArrayAdditionI(arr) { 
arr.sort(function(a,b){return a - b})
var largest = arr.pop();
var sum = 0;
for (var i = 0; i < arr.length; i++){
sum += arr[i];
for (var j = 0; j < arr.length; j++){
if (i != j) {
sum += arr[j];
if (sum == largest) {
return true;
}
}
}
for (var k = 0; k < arr.length; k++) {
if (i != k) {
sum -= arr[k];
if (sum == largest) {
return true;
}
}
}
sum = 0;
}
// code goes here
return false;

}

谢谢!

最佳答案

i_made_that & user3085131:

为了进一步解释 k 循环,它用于按最初添加的顺序遍历和减去数组值,以产生无法通过其他方式获得的新结果。

如果没有 k 循环,您将无法解决许多潜在的数组(尽管由于缺乏适当的测试,它实际上会通过 coderbyte 测试用例)。

考虑 [1,2,3,98,100]...这应该会通过,因为 2+98 = 100。但是如果没有 k 循环,它就不会通过。如果您记录不带 k 的 sum 结果,您会看到:

3 (1 + 2)
6 (3 + 3)
104 (6 + 98)
3 (2 + 1)
6 (3 + 3)
104 (6 + 98)
4 (3 + 1)
6 (4 + 2)
104 (6 + 98)
99 (98 + 1)
101 (99 + 2)
104 (101 + 3)

然而,对于 k 循环,在 i 的第二次迭代中它将通过,因为它将从 104 中减去 1,然后从 103 中减去 3 以达到 100。

关于javascript - Coderbyte 数组相加解决方案——for循环与for循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20484672/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com