gpt4 book ai didi

javascript - 字符串加法我 coderbyte 完全难住了

转载 作者:行者123 更新时间:2023-11-28 01:20:56 24 4
gpt4 key购买 nike

谁能像一个6岁的 child 一样向我解释一下解决方案?我无法理解这些解决方案。也许有一些代码注释?

谢谢。

<小时/>

我在 coderbyte 上花了 2 个小时试图解决这个问题。问题如下:

Have the function ArrayAdditionI(arr) take the array of numbers stored in arr and return the string true if any combination of numbers in the array can be added up to equal the largest number in the array, otherwise return the string false. For example: if arr contains [4, 6, 23, 10, 1, 3] the output should return true because 4 + 6 + 10 + 3 = 23. The array will not be empty, will not contain all the same elements, and may contain negative numbers.

我在互联网上搜索过,从 coderbyte 本身的人们的答案中阅读了很多人的解决方案,但没有任何评论,我真的很难弄清楚这是如何完成的。我已经开始了无数次,所以我什至不确定最后一次尝试是否更好。

我知道我需要以某种方式循环并测试每个组合索引 5、索引 4、索引 3、索引 2、索引 1,以及少于所有这些的每个组合(即仅索引 5 和索引 3) )。我只是不知道该怎么做。如果我知道该列表始终是一个包含 5 个数字的数组,并且它需要全部 5 个数字,那么我会编写 5 个循环,全部同样嵌套在一个大循环中,对吧?然而,由于不需要所有数字并且不知道所有情况下数组的长度,这增加了复杂性,我完全被难住了。我尝试使用 Math.floor(Math.random() * array.length);生成一个数字列表...但这也不起作用。

function ArrayAdditionI(arr) { 
var longest = arr.sort( function(a,b) { return a-b });
var longest = longest[longest.length - 1];

var sumArr = function (arrb) {
var sum = 0;
for (var z = 0; z < arrb.length; z++){
sum += arrb[z];
}
return sum;
};

for (var i = 0; i > arr.length; i++) {
for (var y = 0; y > arr.length; i++) {
testArr.push(arr[i]);
if (sumArr(testArr) === longest) {
return true;
}
testArr.push(... its 4am and I'm stumped!...)
}}


// code goes here
return false;

}

// keep this function call here
// to see how to enter arguments in JavaScript scroll down
ArrayAdditionI(readline());

最佳答案

该问题的一个相当简单易懂且常见的解决方案如下。它基本上是通过添加每个后续数字(循环 j)来向前循环数组(循环 i)。如果循环 j 结束而没有解决方案,则循环 k 开始并删除每个后续数字。然后 i 递增并且循环重新开始。

function ArrayAdditionI(arr) { 
arr.sort(function(a,b){return a - b})
var largest = arr.pop(); // Set largest to last (largest) array value
var sum = 0;
for (var i = 0; i < arr.length; i++){ // Start outer loop
sum += arr[i];
for (var j = 0; j < arr.length; j++){ // Start inner to begin sum
if (i != j) { // Ensure we don't add the same array index to itself
sum += arr[j];
console.log(sum);
if (sum == largest) {
return true;
}
}
}
for (var k = 0; k < arr.length; k++) { // If no match, start 2nd loop to re-iterate removing index values
if (i != k) {
sum -= arr[k];
console.log(sum);
if (sum == largest) {
return true;
}
}
}
sum = 0; // Reset sum for outer loop
}
return false;
}

关于javascript - 字符串加法我 coderbyte 完全难住了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23267304/

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