目前最优解法:
/**
* @param {number[]} nums
* @return {number[][]}
*/
var subsets = function(nums) {
const len = nums.length
let arr = []
let res = []
dfs(0, arr)
return res
function dfs (num, vec) {
let tmp = vec.slice(0)
res.push(tmp)
for (let i = num; i < len; i++) {
vec.push(nums[i])
dfs(i + 1, vec)
vec.splice(-1)
}
}
};
我的解法:
/**
* @param {number[]} nums
* @return {number[][]}
*/
var subsets = function(nums) {
var res = [];
fn(nums, [], 0);
function fn(arr, tmp, start) {
res.push(tmp.slice(0));
for (let i = start; i < arr.length; i++) {
tmp.push(nums[i]);
fn(arr, tmp, i + 1);
tmp.pop();
}
}
return res;
};