# [Leetcode]Subsets

Subsets My Submissions Question
Total Accepted: 72388 Total Submissions: 247343 Difficulty: Medium
Given a set of distinct integers, nums, return all possible subsets.

Note:
Elements in a subset must be in non-descending order.
The solution set must not contain duplicate subsets.
For example,
If nums = [1,2,3], a solution is:

[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
Subscribe to see which companies asked this question

class Solution {
public:
vector<vector<int>> subsets(vector<int>& nums) {
int len = nums.size();
string str;
for(int i = 0;i != len;++i){
str.push_back(nums[i] + '0');
}

vector<string> res = func(str);

vector<vector<int> >    ans;
ans.push_back({});
for(int i = 0;i != res.size();++i){
vector<int> tem;
for(int j = 0;j != res[i].size();++j){
tem.push_back(res[i][j] - '0');
}
sort(tem.begin(),tem.end());
ans.push_back(tem);
}
sort(ans.begin(),ans.end());
return ans;
}

vector<string> func(string str){
int len = str.size();
vector<string>  res;
int num = 1 << len;
num = num - 1;
//cout << num << endl;
for(int i = 1;i <= num;++i){
string tem = getSubstring(str,i);
res.push_back(tem);
}
return res;
}
string getSubstring(string str,int num){
string tem;
//cout << num << endl;
int len = str.size();
int n = len - 1;
while(num){
if(num & 0x1){
tem += str[n];
}
num = num >> 1;
--n;
}
return tem;
}
};

DFS:

class Solution {
public:
vector<vector<int>> subsets(vector<int>& nums) {
sort(nums.begin(), nums.end());
vector<vector<int>> res;
vector<int> path;
dfs(nums, 0, path, res);
return res;
}

void dfs(vector<int>& nums, int index, vector<int>& path, vector<vector<int>>& res) {
res.push_back(path);
for (unsigned int i = index; i < nums.size(); i++) {
path.push_back(nums[i]);
dfs(nums, i+1, path, res);
path.pop_back();
}
}
};

• 本文已收录于以下专栏：

## LeetCode78:Subsets

Given a set of distinct integers, nums, return all possible subsets.Note: Elements in a subset must...
• u012501459
• 2015年07月06日 17:33
• 3275

## LeetCode Subsets 和 LeetCode Subsets II

LeetCode Subsets 和 LeetCode Subsets II 给出一个数组生成该数组所有元素的组合。 基本思路先对数组排序，然后循环+dfs，生成指定元素数目为：1,2,...arr...
• worldwindjp
• 2014年04月09日 22:02
• 10665

## LeetCode OJ 系列之78 Subsets --Python

Problem: Given a set of distinct integers, nums, return all possible subsets. Note: Elements in...
• ln152315
• 2015年11月18日 22:07
• 916

## leetcode解题之 77. Combinations&78. Subsets&90. Subsets II java 版（求所有子集）

leetcode解题之 Subsets java 版（求所有子集） ，90. Subsets II ，78. Subsets，77. Combinations...
• mine_song
• 2017年04月08日 19:36
• 390

## [leetcode-78]subsets(java)

• zdavb
• 2015年08月05日 22:42
• 915

## leetcode 78. Subsets-数组子集|回溯算法

• happyaaaaaaaaaaa
• 2016年06月07日 17:04
• 4312

## LeetCode Subsets(求所有的集合)

Given a set of distinct integers, nums, return all possible subsets. Note: Elements in a subset mu...
• wuli2496
• 2015年06月06日 14:11
• 706

## LeetCode90:Subsets II

Given a collection of integers that might contain duplicates, nums, return all possible subsets.Note...
• u012501459
• 2015年07月08日 11:12
• 1099

## leetcode 698. Partition to K Equal Sum Subsets（记忆化搜索/状压dp）

• huatian5
• 2017年10月15日 17:18
• 1211

## [LeetCode 90] Subsets II

• ever223
• 2015年03月28日 00:32
• 1032

举报原因： 您举报文章：[Leetcode]Subsets 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)