一、题目要求
给定义一个子项不重复的数组,求此数组的所有子集。
二、思路
设有一个二进制变量,其长度刚好等于数组长度。
用这个变量的每一位来代表数组中的每一个子项,为 0 则无,为 1 则有,则这个变量的每一个可能的值映射的数组都是数组的一个子集(排除最大的一位数,也就是全为 1 的时候)。
三、题解
代码如下:
function subsets(nums){
const {length} = nums;
const maximum = 2 ** length;
const res = [];
for(let index = 0; index < maximum; index ++){
const tempArr = [];
for(let subIndex = 0; subIndex < length; subIndex++){
if(index & (1 << subIndex)){
tempArr.push(nums[subIndex]);
}
}
res.push(tempArr);
}
return res
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。