//不含重复数字的子集 递归算法
vector<vector<int>>subsets(vector<int>&nums){
if(nums.empty()) return {{}};
int n=nums.back();
nums.pop_back();
vector<vector<int>>res =subsets(nums);
int size=res.size();
for(int i=0;i<size;i++){
res.push_back(res[i]);
res.back().push_back(n);
}
return res;
}
//不含重复数字的子集 回溯算法
vector<vector<int >>res;
vector<vector<int>subsets(vector<int >&nums){
vector<int >track;
backtrack(nums, 0, track);
return res;
}
void backtrack(vector<int>& nums,int start,vector<int >&track){
res.push_back(track);
for(int i=start;i<nums.size();i++){
track.push_back(nums[i]);
backtrack(nums, start+1, track);
track.pop_back();
}
}
算法入门 30.求无重复数字的子集(递归算法+回溯算法)
最新推荐文章于 2023-07-10 11:40:18 发布