gpt4 book ai didi

javascript - 在数组中查找可能的加法组合

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:08:01 25 4
gpt4 key购买 nike

解决这个问题的最佳方法是什么?我不知道如何开始。这不是作业问题,而是面试练习。

'使用 JavaScript 语言,让函数 ArrayAddition(arr) 获取存储在 arr 中的数字数组,如果数组中的任意数字组合相加等于数组中的最大数字,则返回字符串 true,否则返回字符串 false。例如:如果 arr 包含 [4, 6, 23, 10, 1, 3] 输出应该返回真,因为 4 + 6 + 10 + 3 = 23。数组不会为空,不会包含所有相同的元素,并且可能包含负数。 '

http://coderbyte.com/CodingArea/GuestEditor.php?ct=Array%20Addition&lan=JavaScript

最佳答案

试试这个解决方案。对于此代码,我使用此引用 github .

<script type="text/javascript">

var bol=false
var arr=[4, 6, 23, 10, 1, 3]
var maxx=Math.max.apply(Math, arr);
var index = arr.indexOf(maxx);
arr.splice(index, 1);


function k_combinations(set, k) {
var i, j, combs, head, tailcombs;
if (k > set.length || k <= 0) {
return [];
}
if (k == set.length) {
return [set];
}
if (k == 1) {
combs = [];
for (i = 0; i < set.length; i++) {
combs.push([set[i]]);
}
return combs;
}
combs = [];
for (i = 0; i < set.length - k + 1; i++) {
head = set.slice(i, i+1);
tailcombs = k_combinations(set.slice(i + 1), k - 1);
for (j = 0; j < tailcombs.length; j++) {
combs.push(head.concat(tailcombs[j]));
}
}
return combs;
}


function combinations(set) {
var k, i, combs, k_combs;
combs = [];
for (k = 1; k <= set.length; k++) {
k_combs = k_combinations(set, k);
for (i = 0; i < k_combs.length; i++) {
combs.push(k_combs[i]);
}
}
return combs;
}
var result=combinations(arr)


for(z=0;z<result.length;z++){
var tot=0
for(c=0;c<result[z].length;c++){
tot+=result[z][c]
}
if(tot===maxx){bol=true}
}

console.log(bol)


</script>

如果此解决方案不能满足您的需求,很抱歉让您耽误了时间。

关于javascript - 在数组中查找可能的加法组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23169937/

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