【发布时间】:2017-09-18 02:47:02
【问题描述】:
我有一个数组[1,2,4,5,1,7,8,9,2,3]
我希望它生成所有值总和小于 10 的子集
当前结果[[1,2,4],[5,1],[7],[8],[9],[2,3]]
预期结果[[4,5,1],[9,1],[8,2],[3,7],[1,2]]
我就是这么做的
var a = [1,2,4,5,1,7,8,9,2,3], tempArr = []; tempSum = 0, result = [];
for (var i = 0;i< a.length; i += 1 ) {
tempSum+=a[i];
tempArr.push(a[i]);
if((tempSum+a[i+1])>10) {
result.push(tempArr);
tempSum = 0;
tempArr = [];
} else if (i == a.length-1 && tempArr.length > 0) { // if array is [1,2,3]
result.push(tempArr);
}
}
但它给了我[[1,2,4],[5,1],[7],[8],[9],[2,3]],它有 6 个子集,但我希望得到 [[4,5,1],[9,1],[8,2],[3,7],[1,2]],它有 5 个子集。
【问题讨论】:
-
您的问题是关于 “通过小于 10 的值的总和”,但您的意思是在预期结果中恰好是 10 或小于 10 的组。是另一条规则,例如,将单个数组中的项目计数保持在较低水平,例如 [7, 3] 而不是 [7, 2, 1]?
-
你只有两个 1 开始,但使用三个 1 来产生结果。怎么样。?
标签: javascript arrays sorting arraylist multidimensional-array