Given a set of distinct integers, nums, return all possible subsets.
Note: The solution set must not contain duplicate subsets.
For example,
If nums = [1,2,3], a solution is:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
题目链接
求一个集合的所有子集(不包括重复的)
Language: cpp(6ms)
class Solution {
public:
vector<vector<int> > subsets(vector<int>& nums) {
sort(nums.begin(),nums.end());
int set_nums=pow(2,nums.size());
vector<vector<int> > res(set_nums,vector<int>());
for(int i=0;i<set_nums;i++){
for(int j=0;j<nums.size();j++){
if((i>>j)&1){
res[i].push_back(nums[j]);
}
}
}
return res;
}
};
Discuss里的讨论:
bit manipulation
Recursive/Iterative/Bit-Manipulation Solutions