leetcode 21
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:
输入: nums = [1,2,3]
输出:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
class Solution { public: int n; vector <vector<int>> ans; void back_search(int begin,int num,vector<int>& nums,vector<int>& path) { if(path.size() == num) { ans.push_back(path); } else { for(int i=begin;i<n;i++) { path.push_back(nums[i]); back_search(i+1,num,nums,path); path.pop_back(); } } } vector<vector<int>> subsets(vector<int>& nums) { n=nums.size(); ans.clear(); for(int i=0;i<=n;i++) { vector<int> path; back_search(0,i,nums,path); } return ans; } };
注意:利用回溯法,以子集中元素的数量为标准,挨个进行枚举求解。