Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中生成集合的所有子集_Javascript_Algorithm_Subset - Fatal编程技术网

在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{

在学习面试时,我只想分享一个关于如何在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{
            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开始?您的答案也符合以下问题:-您可能也想将其张贴在那里。