1.题目描述
示例 1:
输入:nums = [1,2,3]
输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
示例 2:
输入:nums = [0]
输出:[[],[0]]
2.代码
cpp
class Solution {
public:
vector<vector<int>> res;
vector<int> path;
void backtrack(vector<int> &nums, int startindex){
res.push_back(path);
if(startindex >= nums.size()){
return;
}//递归终止条件
for(int i = startindex;i<nums.size();i++){
path.push_back(nums[i]);
backtrack(nums,i+1);
//回溯,比如当时path = {1 2 3}return到此处了,则需要回退到{1 2 }这一层继续for循环
path.pop_back();
}
}
vector<vector<int>> subsets(vector<int>& nums) {
backtrack(nums,0);
return res;
}
};