王國慶 发表于 2024-6-11 19:17:48

力扣78. 子集

给你一个整数数组nums,数组中的元素互不相同。返回该数组所有可能的子集(幂集)。解集不能包罗重复的子集。你可以按任意次序返回解集。
示例 1:
输入:nums =      输出:[[],,,,,,,]
示例 2:
输入:nums =      输出:[[],]
https://img-blog.csdnimg.cn/direct/83af18d9f7a143028dbfb3e86926c8b1.jpeg
回溯:

class Solution {
public:
    vector<vector<int>> ret;
    void dfs(const vector<int>& nums,int cur,vector<int>& s){
      if(cur==nums.size()){//位数从0开始,位数等于原序列长度时返回
            ret.push_back(s);//子集加入ret
            return;
      }

      dfs(nums,cur+1,s);//递归进入,不选当前元素

      s.push_back(nums);//递归进入,选当前元素
      dfs(nums,cur+1,s);
      s.pop_back();//回溯,弹出最后一个元素
    }

    vector<vector<int>> subsets(vector<int>& nums) {
      vector<int> s;//当前枚举的子集
      dfs(nums,0,s);

      return ret;
    }
};
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 力扣78. 子集