LeetCode Subsets && Subsets II
2017-06-05 19:46
337 查看
Leetcode subset 问题
Leetcode subset 问题Subset tricky 解法
Subset Subset II search 解法
Subset tricky 解法
无重复: 子集数量一定是 (1 << nums.size()),所以可以根据每个集合的01编码解析是否包含这个元素。如5 = 0101,则nums[0]和nums[2]在第5个集合中。类似的可以写出如下代码
class Solution { public: # define VVI vector<vector<int>> # define VI vector<int> VVI subsets(VI& nums) { int len = nums.size(); int total = 1 << len; VVI re(total, VI()); for (int i = 0; i < len; ++i) for (int j = 0; j < total; ++j) if ((j >> i) & 1) re[j].push_back(nums[i]); return re; } };
Subset && Subset II search 解法
search时存在重复则跳过。关键在于代码行if (i != pos && nums[i - 1] == nums[i]) continue;
可以解决重复问题。如果是当前循环中第一次遇到,则可以加入,保证cur集合中可以存在一定数量的重复元素。Subset和Subset II都可以通过这个解法解出来。
class Solution { # define VVI vector<vector<int>> # define VI vector<int> # define pb push_back # define po pop_back # define LN ListNode public: vector<vector<int>> subsetsWithDup(vector<int>& nums) { sort(nums.begin(), nums.end()); VVI re; VI cur; search(nums, 0, cur, re); return re; } void search(VI& nums, int pos, VI cur, VVI& re) { if (pos == nums.size()) { re.pb(cur); return; } for (int i = pos; i < nums.size(); ++i) { if (i != pos && nums[i - 1] == nums[i]) continue; // for `Subset II`, skip duplicate cur.pb(nums[i]); search(nums, i + 1, cur, re); cur.po(); } re.pb(cur); } };
相关文章推荐
- LeetCode-Subsets & Subsets II
- LeetCode Subsets && Subsets II
- 【LeetCode】Subsets I && II
- Leetcode | Subsets I & II
- leetcode解题之 77. Combinations&78. Subsets&90. Subsets II java 版(求所有子集)
- <LeetCode OJ> 78 / 90 Subsets (I / II)
- [LeetCode 78] Subsets && [LeetCode 90] Subsets II
- [LeetCode] Combinations、Subsets、Subsets II
- LeetCode解题报告—— Word Search & Subsets II & Decode Ways
- 78. Subsets && 90. Subsets II
- <LeetCode OJ> 78. Subsets
- Leetcode: Subsets & SubsetsII
- LeetCode: Subsets I & II
- LeetCode - Subsets I && II
- [Leetcode] #78#90 Subsets I & II
- leetcode -- Subsets I &II-- 重点,求0,1序列
- 【LeetCode】Subsets & Subsets II
- 【leetcode】Subsets 1&2
- leetcode题解-78. Subsets && 90. Subsets II
- Leetcode 78&90. Subsets I & II 【排列与组合的生成总结】