![](/img/trans.png)
[英]Return all possible combinations of numbers in an array whose sum is less than or equal to n
[英]Combinations of numbers in array who sum is equal to n
例子:
var a = [1,2,3,4,5,6];
我想顯示數組中所有唯一的 3 個數字組合,其中這 3 個數字的總和等於 9(或 n)。
所以這個例子的結果是:
[1,2,6]
[2,3,4]
[1,3,5]
我能找到的最接近的是字符串的排列......
var alphabet = "abcde"; // shortened to save time
function permute(text) {
if(text.length === 3) { // if length is 3, combination is valid; alert
console.log(text); // or alert
} else {
var newalphabet = alphabet.split("").filter(function(v) {
return text.indexOf(v) === -1;
}); // construct a new alphabet of characters that are not used yet
// because each letter may only occur once in each combination
for(var i = 0; i < newalphabet.length; i++) {
permute(text + newalphabet[i]); // call permute with current text + new
// letter from filtered alphabet
}
}
}
permute("");
這可能是一個可能的解決方案。 請注意,它不會處理唯一值,為此您需要添加額外的邏輯。 但是,如果數組已排序並具有唯一條目,那么以下將產生理想的結果。
var a = [1,2,3,4,5,6]; var result = []; for (var i = 0; i < a.length-2; i++) { for (var j = i+1; j< a.length-1;j++) { for (var k = j+1; k < a.length;k++) { if(a[i]+a[j]+a[k] == 9) { result.push([a[i],a[j], a[k]]); } } } } console.log(result);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.