【LeetCode】78. Subsets (2 solutions)
2014-12-05 11:22
106 查看
Subsets
Given a set of distinct integers, S, 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 S =
解法一:
遍历S.size()位数的所有二进制数,1代表对应位置的元素在集合中,0代表不在。
一共2^n种情况。
详细步骤参照Subsets II
解法二:
遍历所有元素,记当前元素为S[i]
遍历当前所有获得的子集,记为ret[j]
将S[i]加入ret[j],即构成了一个新子集。
详细步骤参照Subsets II
Given a set of distinct integers, S, 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 S =
[1,2,3], a solution is:
[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]
解法一:
遍历S.size()位数的所有二进制数,1代表对应位置的元素在集合中,0代表不在。
一共2^n种情况。
详细步骤参照Subsets II
class Solution { public: vector<vector<int> > subsets(vector<int> &S) { vector<vector<int> > result; int size = S.size(); for(int i = 0; i < pow(2.0, size); i ++) {//2^size subsets vector<int> cur; int tag = i; for(int j = size-1; j >= 0; j --) {//for each subset, the binary presentation has size digits if(tag%2 == 1) cur.push_back(S[j]); tag >>= 1; if(!tag) break; } sort(cur.begin(), cur.end()); result.push_back(cur); } return result; } };
解法二:
遍历所有元素,记当前元素为S[i]
遍历当前所有获得的子集,记为ret[j]
将S[i]加入ret[j],即构成了一个新子集。
详细步骤参照Subsets II
class Solution { public: vector<vector<int> > subsets(vector<int> &S) { sort(S.begin(), S.end()); vector<vector<int> > ret; vector<int> empty; ret.push_back(empty); for(int i = 0; i < S.size(); i ++) { int size = ret.size(); for(int j = 0; j < size; j ++) { vector<int> newset = ret[j]; newset.push_back(S[i]); ret.push_back(newset); } } return ret; } };
相关文章推荐
- [LeetCode] 78. Subsets
- 【LeetCode】137. Single Number II (3 solutions)
- [leetcode]78. Subsets -- JavaScript 代码
- 【LeetCode】107. Binary Tree Level Order Traversal II (2 solutions)
- LeetCode 8-9 Solutions
- 【LeetCode】164. Maximum Gap (2 solutions)
- Leetcode 78. Subsets
- 78. Subsets 【LeetCode算法之旅之深度优先搜索】
- 【LeetCode】88. Merge Sorted Array (2 solutions)
- LeetCode Solutions : Find Minimum in Rotated Sorted Array
- 【LeetCode】207. Course Schedule (2 solutions)
- 【LeetCode】154. Find Minimum in Rotated Sorted Array II (3 solutions)
- [Leetcode]@python 78. Subsets
- 【LeetCode】 Same Tree (2 solutions)
- 【LeetCode】200. Number of Islands (2 solutions)
- 【LeetCode】120. Triangle (3 solutions)
- 【LeetCode】32. Longest Valid Parentheses (2 solutions)
- 【LeetCode】3. Longest Substring Without Repeating Characters (2 solutions)
- 【LeetCode】4. Median of Two Sorted Arrays (2 solutions)
- leetcode 78. Subsets