题目描述
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例
输入: nums = [1,2,3]
输出:
[[3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]
思路
回溯法。对于每一个数,只有两种状态,选和不选。因为题目中元素是不重复的,所以这种方法不会重复。
代码
class Solution {
public:
vector<vector<int>> subsets(vector<int>& nums) {
vector<int> item;
vector<vector<int>> res;
res.push_back(item);
generate(0, item, nums, res);
return res;
}
void generate(int i, vector<int> &item, vector<int>&nums, vector<vector<int>>& res){
if (i == nums.size())
return;
item.push_back(nums[i]);
res.push_back(item);
generate(i+1, item, nums, res);
item.pop_back();
generate(i+1, item, nums, res);
}
};