在javascript中生成集合的所有子集
在学习面试时,我只想分享一个关于如何在javascript中生成集合的所有唯一子集的示例 实现应该如下所示:在javascript中生成集合的所有子集,javascript,algorithm,subset,Javascript,Algorithm,Subset,在学习面试时,我只想分享一个关于如何在javascript中生成集合的所有唯一子集的示例 实现应该如下所示: (function(input){ var result, mask, total = Math.pow(2, input.length); for(mask = 0; mask < total; mask++){ //O(2^n) result = []; i = input.length - 1; //O(n) do{
(function(input){
var result, mask, total = Math.pow(2, input.length);
for(mask = 0; mask < total; mask++){ //O(2^n)
result = [];
i = input.length - 1; //O(n)
do{
if( (mask & (1 << i)) !== 0){
result.push(input[i]);
}
}while(i--);
console.log(result);
}
})(['a','b','c','d','e','f']);
(功能(输入){
var结果,掩码,总计=数学功率(2,输入长度);
对于(mask=0;mask
总运行时间为O(n2^n)。可能重复[这可能会有帮助][1][1]:@Lonely,它不是重复的,而且回答的算法甚至没有效率。我们实际上有2^n-1个组合,因为在这种情况下,第一个组合总是0。如果使用“mask”不是会更优化吗是否从1开始而不是从0开始?您的答案也符合以下问题:-您可能也想将其张贴在那里。