2016-10-16 1 views
-1

でセットのすべての冪を生成します。、問題を把握することはできません、私は以下の私の次のスニペットで正しい出力を取得することはできませんよjavascriptの

function powerSet(arr) { 
    var res = []; 
    var len = arr.length; 
    for (var i = 0; i < Math.pow(2, len); i++) { 
    var aux = []; 
    for (var j = 0; j < len; j++) { 
     //console.log(j +':'+((1<<j) & j)); 
     if (((1<<j) & j) !== 0) { 
     aux.push(arr[j]); 
     } 
    } 
    res.concat(aux); 
    } 
    return res; 
} 

console.log(powerSet([1, 2])); // [[1], [2], [1, 2]] 

答えて

1

あなたのコードには2つの問題があります。

  • あなたはres.push(aux)代わりのres.concat(aux)
  • を行う i & 1 << j
  • すなわち、代わりにjiのビスをチェックする必要があります

function powerSet(arr) { 
 
    var res = []; 
 
    var len = arr.length; 
 
    for (var i = 0; i < Math.pow(2, len); i++) { 
 
    var aux = []; 
 
    for (var j = 0; j < len; j++) { 
 
     //console.log(j +':'+((1<<j) & j)); 
 
     if (i & (1 << j)) { 
 
     aux.push(arr[j]); 
 
     } 
 
    } 
 
    res.push(aux); 
 
    } 
 
    return res; 
 
} 
 

 
console.log(powerSet([1, 2])); // [[1], [2], [1, 2]]

関連する問題