给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
输入: nums = [1,2,3]
输出:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
以题给的示例为例,总共有三个元素,则它总共会有2^3个子集,
然后我们需要考虑每个子集里面放几个元素,以及放哪个元素
我们可以采用对每个元素的对应位进行思考,在这个例子中总共由8个子集,
因此我们可以从0~7将他们的二进制数写出来
3 2 1``
0 0 0 0
0 0 1 1
0 1 0 2
0 1 1 3
1 0 0 4
1 0 1 5
1 1 0 6
1 1 1 7
1表示取那几个位的元素,1的个数表示该子集的大小
首先我们可以通过位运算,将每个二进制中的1位表示出来用来进行开辟子集大小,和取哪几个元素放入子集
代码如下:
int add(int num,int numsSize)
{
int count=0;
for(int i=0;i<numsSize;i++)
{
if(num&1)