javascript - 如何获得数组中数字总和的组合
问题描述
我有一个数组,我想得到它的数字总和的所有组合。
let arr=[1,2,3,4,5];
1st iteration : 1+2=3,1+3=4, 1+4=5, 1+5=6
and array becomes arr[1,2,3,4,5,6]
2nd iteration : 2+1=3,2+3=5, 2+4=6, 2+5=7
and array becomes arr[1,2,3,4,5,6,7]......
and 1+2+3=6, 1+2+4=7
.
.
.
and 1+2+3+4=10
.
.
.
and 1+2+3+4+5=15
and final array becomes =[1,2,3,4,5,6,7,8,9,10,11,15]
谁能帮我为此建立一个算法?
到目前为止,这是我尝试过的,我尝试准备 arr 的可能子数组的数组,但无法获得所有组合。
let arr=[1,2,3,4,5];
let a=[];
for(let i=0; i < arr.length; i++){
for(let j=0; j < arr.length; j++){
let b=[];
for( let k=i; k<=j; k++ ){
b.push(arr[k]);
}
a.push(b);
}
}
console.log(a);
解决方案
您可以使用字典或关联数组(JavaScript 的数组是)来存储可以得出的总和,方法是将总和用作索引并将元素设置为“真”,类似于创建筛子;然后,您可以使用for in
.
function sums(values) {
var dictionary = [];
for (var i in values) {
var temp = [values[i]]; // start with value by itself
for (var j in dictionary) {
temp.push(values[i] + Number(j)); // sum of value and values already in dictionary
}
for (var k in temp) {
dictionary[temp[k]] = true; // transfer values to dictionary
}
}
var output = [];
for (var i in dictionary) {
output.push(Number(i)); // convert dictionary to array of values
}
return output;
}
document.write(sums([2,5,11,16]));
推荐阅读
- python - 使用 MongoDB/MongoEngine 从集合中获取 n 个文档
- reactjs - 解决 react-hooks/exhaustive-deps 的最佳方法
- mysql - 删除耗时过长且未完成
- java - Java 流视频高效
- python - ValueError:形状不匹配:标签的形状(收到的 (320,))应该等于 logits 的形状,除了最后一个维度(收到的 (32, 2))
- python - Python 类变量的范围?
- python - 使用 Selenium 访问嵌套的 iframe
- angular - 错误 TS2307:找不到模块 'rxjs/Operators' Azure DevOps Angular 8
- r - 如何在quantmod中处理特殊符号如GC=F
- postgresql - 从许多类似的表中查询 postgresql - 在 from 子句上动态更改表