subset
问题描述:
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],
[]
]
测试代码(c++):
class Solution {
void compute_c(vector<vector<int>>& result,vector<int> res,vector<int> nums,int start)
{
for(int i=start;i<nums.size();i++)
{
res.push_back(nums[i]);
result.push_back(res);
compute_c(result,res,nums,i+1);
res.pop_back();
}
}
public:
vector<vector<int>> subsets(vector<int>& nums) {
vector<vector<int>> result;
vector<int> res;
result.push_back(res);
compute_c(result,res,nums,0);
return result;
}
};
性能:
参考答案(Python):
class Solution(object):
def subsets(self, nums):
res = [[]]
for i in nums:
res.extend([[i]+x for x in res])
return res