力扣78. 子集

打印 上一主题 下一主题

主题 575|帖子 575|积分 1729

给你一个整数数组nums,数组中的元素互不相同。返回该数组所有可能的子集(幂集)。解集不能包罗重复的子集。你可以按任意次序返回解集。
示例 1:
输入:nums = [1,2,3]     输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
示例 2:
输入:nums = [0]     输出:[[],[0]]

回溯:

  1. class Solution {
  2. public:
  3.     vector<vector<int>> ret;
  4.     void dfs(const vector<int>& nums,int cur,vector<int>& s){
  5.         if(cur==nums.size()){//位数从0开始,位数等于原序列长度时返回
  6.             ret.push_back(s);//子集加入ret
  7.             return;
  8.         }
  9.         dfs(nums,cur+1,s);//递归进入,不选当前元素
  10.         s.push_back(nums[cur]);//递归进入,选当前元素
  11.         dfs(nums,cur+1,s);
  12.         s.pop_back();//回溯,弹出最后一个元素
  13.     }
  14.     vector<vector<int>> subsets(vector<int>& nums) {
  15.         vector<int> s;//当前枚举的子集
  16.         dfs(nums,0,s);
  17.         return ret;
  18.     }
  19. };
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王國慶

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表