示例:
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("");
答案 0 :(得分:0)
这可能是一种可能的解决方案。请注意,它不会处理唯一值,因此您需要添加其他逻辑。但是,如果数组已排序并具有唯一条目,则以下内容将产生理想结果。
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);