【发布时间】:2021-10-02 17:56:51
【问题描述】:
我正在尝试用 JavaScript 解决这个算法。考虑到最大键值为 3,如何编写考虑时间复杂度的解决方案?
input1 = [{0: "small"},{0: "large"}]
output1 = [ 'small.', 'large.']
-----------------------------------------
input2 = [ {0: "small"},{0: "large"}, {1: "red"} ]
output2 = ['small.red', 'large.red']
-----------------------------------------
input3 = [{0: "small"},{0: "large"}, {1: "red"}, {2:"cake"} ]
output3 = ['small.red.cake', 'large.red.cake'}
-----------------------------------------
input4 = [{0: "small"},{0: "large"}, {1: "red"}, {1: "orange"}, {2: "cake"} ]
output4 = ['small.red.cake', 'large.red.cake', 'small.orange.cake', 'large.orange.cake'}
------------------------------------------
input5 = [ {0: "small"},{0: "large"}, {1: "red"},{1: "orange"},{1: "blue"},{2: "cake"},{2: "ice"}]
output5 = ['small.red.cake', 'large.red.cake', 'small.orange.cake', 'large.orange.cake', 'small.blue.cake', 'large.blue.cake', 'small.red.ice', 'large.red.ice', 'small.orange.ice', 'large.orange.ice', 'small.blue.ice', 'large.blue.ice']
] //12 combinations
我的尝试:我故意在 if 条件下检查索引。它按预期工作。我正在寻找最佳解决方案。
const input5 = [ {0: "small"},{0: "large"}, {1: "red"},{1: "orange"},{1: "blue"},{2: "cake"},{2: "ice"}]
let array1 = [];
let array2 = [];
let array3 = [];
input5.forEach(val => {
if(val[0]) {
array1.push(val[0]);
}
if(val[1]) {
array2.push(val[1]);
}
if(val[2]) {
array3.push(val[2]);
}
});
const finalArray = [];
array1.forEach(val1 => {
if(array2.length > 0) {
array2.forEach(val2 => {
if(array3.length > 0) {
array3.forEach(val3 => {
const finalVal = `${val1}.${val2}.${val3}`;
finalArray.push(finalVal);
})
}else {
const finalVal = `${val1}.${val2}`;
finalArray.push(finalVal);
}
})
}else {
const finalVal = `${val1}.`;
finalArray.push(finalVal);
}
})
console.log(finalArray);
【问题讨论】:
-
您有解决方案的尝试吗?将值除以级别/深度并在每个级别上进行排列基本上就是您所需要的。
-
感谢@KelvinSchoofs 的回复,我长期以来一直在尝试使用 foreach 循环,但这不是正确的方法,也没有得到预期的结果。所以终于来到stackoverflow寻找解决方案。
-
发布您的尝试仍然是个好主意。我们可以指出一个错误,或者如果您只是使用了错误的方法,我们可以建议另一种方法。
-
我发布了我的尝试@KelvinSchoofs
-
这感觉像是递归。
标签: javascript arrays object ecmascript-6 array-algorithms