子集
一个为n的数组nums有2^n的子集,我们可以用比特长度超过n的数字i来表示这个子集。假如有一个两个数组的元素[1 2], 那么我们可以用
0x00表示[ ]
0x01表示[ 2]
0x10表示[1 ]
0x11表示[1 2]
用这种方法我们可以通过自加i穷举出所有可能的子集。 组合数非常庞大,一个64个元素子集数量便有2^64 = 18446744073709551616的可能性,大约一百八十四亿亿。用一个uint64_t的数字就可以记录长达64的数组的子集了。
运算代码如下:
class Solution {
public:
vector<vector<int>> subsets(vector