Given a set of distinct integers, nums, return all possible subsets.
Note:
- Elements in a subset must be in non-descending order.
- 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],
[]
]
解题思路
class Solution {
private:
void subsets(vector<int>& nums, int index, vector<int> path, vector<vector<int>> &result) {
if (index == nums.size()) {
result.push_back(path);
}
else {
subsets(nums, index + 1, path, result);
path.push_back(nums[index]);
subsets(nums, index + 1, path, result);
}
}
public:
vector<vector<int>> subsets(vector<int>& nums) {
sort(nums.begin(), nums.end());
vector<vector<int>> result;
subsets(nums, 0, vector<int>(), result);
return result;
}
};