leetcode78
题目:
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:
输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]
解题思路:
DFS,每一层位nums中的一个数,该数可能存在也可能不存在。
代码:
class Solution { private: vector<vector<int>> res; public: vector<vector<int>> subsets(vector<int>& nums) { res.clear(); vector<int> tmpres; subsetDFS(nums, 0, tmpres); return res; } void subsetDFS(vector<int>& nums, int level, vector<int> tmpres){ if(level == nums.size()){ res.push_back(tmpres); return; } tmpres.push_back(nums[level]); subsetDFS(nums, level+1, tmpres); tmpres.pop_back(); subsetDFS(nums, level+1, tmpres); } };