难度:中等
题目描述:
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:
输入: nums = [1,2,3]
输出:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
解题思路:
var subsets = function(nums) {
let ws = [[]];
for(let i=0; i < nums.length; ++i) {
for(let j=0, len = ws.length; j < len; ++j) {
ws.push(ws[j].concat([nums[i]]));
}
}
return ws;
};
回朔算法
var subsets = function(nums) {
let n = nums.length;
let tmpPath = [];
let res = [];
let backtrack = (tmpPath,start) => {
res.push(tmpPath);
for(let i = start;i < n;i++){
tmpPath.push(nums[i]);
backtrack(tmpPath.slice(),i+1);
tmpPath.pop();
}
}
backtrack(tmpPath,0);
return res;
};