您的位置:首页 > 编程语言 > C语言/C++

Bit Manipulation - Subsets

2015-08-12 10:47 330 查看
https://leetcode.com/problems/subsets/

Difficulty: Medium

输入数组,返回数组的幂集

可使用Backtracking的思路;由于集合每个元素只有取与不取两种可能,因此可以与一个n位的二进制数相对应,1对应取,0对应不取。

// Runtime: 8 ms
class Solution {
public:
vector<vector<int>> subsets(vector<int>& nums) {
sort(nums.begin(), nums.end());
int num_subset = pow(2, nums.size());
vector<vector<int> > res(num_subset, vector<int>());
for (int i = 0; i < nums.size(); i++)
for (int j = 0; j < num_subset; j++)
if ((j >> i) & 1)
res[j].push_back(nums[i]);
return res;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode 8ms subsets C++