78. Subsets
Given a set of distinct integers, nums, return all possible subsets (the power set).
Note: The solution set must not contain duplicate subsets.
Example:
Input: nums = [1,2,3]
Output:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
方法1: backtracking
思路:
不需要查重。尝试添加或不添加。
易错点
- 不要忘记sort
- 出栈时变量要保持入栈时一致
code
class Solution {
public:
vector<vector<int>> subsets(vector<int>& nums) {
// 第一步一定要sort
sort(nums.begin(), nums.end());
// 创建result用于保存结果
vector<vector<int>> result;
// 创建current用于临时储存
vector<int> current;
helper(nums, result, current, 0);
return result;
}
void helper(vector<int> & nums, vector<vector<int>> & result, vector<int> & current, int startIndex){
result.push_back(current);
for (int i = startIndex; i < nums.size(); i++){
current.push_back(nums[i]);
helper(nums, result, current, i + 1);
current.pop_back();
}
}
};