簡體   English   中英

數組中總和等於 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM