let subsets = function(nums) {
let result = [];
let n = nums.length;
let ch = Array.from({length:n} , ()=>0);
const dfs = (L) => {
if(L===n) {
let tmp = [];
for(let i=0; i<n; i++) {
if(ch[i] === 1) tmp.push(nums[i]);
}
result.push(tmp);
}else {
ch[L] = 1;
dfs(L+1);
ch[L] = 0;
dfs(L+1)
}
}
dfs(0);
return result;
};
let subsets = function(nums) {
let res = []
backtrack(0, [])
function backtrack(index, curr) {
res.push(curr)
for (let i = index; i < nums.length; i++) {
backtrack(i + 1, [...curr, nums[i]])
}
}
return res
}
let subsets = function(nums) {
let res = []
const powSize = Math.pow(2, nums.length)
for (let i = 0; i < powSize; i++) {
let set = []
for (let j = 0; j < nums.length; j++) {
if ((i & (1 << j)) > 0) {
set.push(nums[j])
}
}
res.push(set)
}
return res
}