[Leetcode] #78#90 Subsets I & II
2017-02-14 21:38
507 查看
Discription:
Given a set of distinct integers, nums, return all possible subsets.Note: 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],
[]
]
Solution:
void subsets(vector<int>& nums, vector<vector<int>> &result, vector<int> &temp,int begin) { result.push_back(temp); for (int i = begin; i < nums.size(); i++){ temp.push_back(nums[i]); subsets(nums, result, temp, i + 1); temp.pop_back(); } } vector<vector<int>> subsets(vector<int>& nums) { vector<vector<int>> result; vector<int> temp; subsets(nums, result,temp, 0); return result; }
Discription:
Given a collection of integers that might contain duplicates, nums, return all possible subsets.Note: The solution set must not contain duplicate subsets.For example,If nums =
[1,2,2], a solution is:[
[2],
[1],
[1,2,2],
[2,2],
[1,2],
[]
]
Solution:
void subsets(vector<int>& nums, vector<vector<int>> &result, vector<int> &temp,int begin) { result.push_back(temp); for (int i = begin; i < nums.size(); i++){ if (i == begin || nums[i] != nums[i - 1]) { temp.push_back(nums[i]); subsets(nums, result, temp, i + 1); temp.pop_back(); } } } vector<vector<int>> subsetsWithDup(vector<int>& nums) { sort(nums.begin(), nums.end()); vector<vector<int>> result; vector<int> temp; subsets(nums, result,temp, 0); return result; }
bool isDuplicate(vector<int>& nums, int begin, int i){ while (i > begin){ if (nums[i] == nums[begin]) return false; i--; } return true; } void subsets(vector<int>& nums, vector<vector<int>> &result, vector<int> &temp,int begin) { result.push_back(temp); for (int i = begin; i < nums.size(); i++){ if (!isDuplicate(nums, begin, i)) continue; temp.push_back(nums[i]); subsets(nums, result, temp, i + 1); temp.pop_back(); } } vector<vector<int>> subsetsWithDup(vector<int>& nums) { vector<vector<int>> result; vector<int> temp; subsets(nums, result,temp, 0); return result; }GitHub-Leetcode:https://github.com/wenwu313/LeetCode
相关文章推荐
- LeetCode - Subsets I && II
- <LeetCode OJ> 78 / 90 Subsets (I / II)
- LeetCode: Subsets I & II
- [leetcode 78 & 90, Medium] Subsets I and II
- leetcode -- Subsets I &II-- 重点,求0,1序列
- LeetCode解题报告—— Word Search & Subsets II & Decode Ways
- Leetcode | Subsets I & II
- [LeetCode] Subsets I (78) & II (90) 解题思路,即全组合算法
- 【leetcode】Subsets I & II
- [Leetcode]Subsets I&II
- Leetcode 78&90. Subsets I & II 【排列与组合的生成总结】
- 【LeetCode】Subsets I && II
- [算法][LeetCode]Linked List Cycle & Linked List Cycle II——单链表中的环
- LeetCode题解:Subsets I and II
- [LeetCode 112 113] - 路径和I & II (Path Sum I & II)
- LeetCode Single Number I & II 都符合两个问题额外要求的 通用解法 与 思考过程
- 【LeetCode】 Subsets Subsets II
- Leetcode: N Queen I & II
- leetcode Best Time to Buy and Sell Stock I&&II&&III
- [LeetCode 116 117] - 填充每一个节点的指向右边邻居的指针I & II (Populating Next Right Pointers in Each Node I & II)