78. 子集 力扣(中等) 回溯
题目描述:
给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。
解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。
示例 1:
输入:nums = [1,2,3]
输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
题源:https://leetcode-cn.com/problems/subsets/
题解:回溯就完事了,主要是范围很小,只有10位,且每个数字都不同,解空间就2^10
代码:
class Solution { public: int l; vector<vector<int>>ans; vector<int> subans; void dfs(int k,vector<int> num) { if(k>=l) { ans.push_back(subans); return; } subans.push_back(num[k]); dfs(k+1,num); subans.pop_back(); dfs(k+1,num); return; } vector<vector<int>> subsets(vector<int>& nums) { l=nums.size(); subans.clear(); ans.clear(); dfs(0,nums); return ans; } };