leetcoed90. Subsets II(集合子集去重)
来源:互联网 发布:知科地方门户网站系统 编辑:程序博客网 时间:2024/06/06 19:06
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], []]
分析:
后加入的元素,需要加入全部已有的集合,并且考虑重复。
再次考虑S={1,2,2},先排序。
首先加入空集{}
对于元素1,需要加入{},成为新的集合{1}
对于元素2,需要加入{}和{1},成为新的集合{2}和{1,2}。考虑重复,再产生新集合{2,2}和{1,2,2}。
ac代码:
class Solution {public: vector<vector<int>> subsetsWithDup(vector<int>& nums) { vector<vector<int>> ret; vector<int>empty,newset; unordered_map<int,int>count; ret.push_back(empty); int i,j,L=nums.size(),L2,k; for(i=0;i<L;i++) count[nums[i]]++; sort(nums.begin(),nums.end()); vector<int>::iterator ite=unique(nums.begin(),nums.end()); nums.erase(ite,nums.end()); L2=nums.size(); for(i=0;i<L2;i++) { int s=ret.size(); for(j=0;j<s;j++) { newset=ret[j]; for(k=0;k<count[nums[i]];k++) { newset.push_back(nums[i]); ret.push_back(newset); } } } return ret; }};
- leetcoed90. Subsets II(集合子集去重)
- Subsets II(集合的子集)
- Subsets(集合的子集)
- LeetCode 90. Subsets II(子集)
- [LeetCode] Subsets II 子集
- 求所有子集合,不能包含重复集合 (Subsets II)
- LeetCode--Subsets(集合的子集)Python
- 90. Subsets II 子集列举
- Leetcode 78 Subsets + 90 Subsets II 子集
- LeetCode OJ 之 Subsets II (子集合-二)
- Leetcode 90 Subsets II (打印不重复的子集)
- leetcode 78. Subsets(DFS找集合的全部子集)
- LeetCode | Subsets(子集)
- Subsets II 求有重复元素的集合的子集 @LeetCode
- leetcode解题之 77. Combinations&78. Subsets&90. Subsets II java 版(求所有子集)
- 78. Subsets&集合的子集&Power Set
- Leetcode:78. Subsets 求集合的子集
- leetCode 90.Subsets II(子集II) 解题思路和方法
- 记事本编写java程序
- 0-1背包 (动态规划)
- 【4002】括号序列
- Android -Toast源码解析
- [LeetCode]Merge k Sorted Lists
- leetcoed90. Subsets II(集合子集去重)
- 简单的Socket 编程 服务端和客户端 (封装)
- 设计模式之创建型模式——简单工厂(又称为静态工厂不属于GOF23种设计模式以内)
- 笔记
- Android-Snackbar用法及源码分析
- C++ 类型转换
- C与C++面试易出知识点
- JAVA通过身份证号码获取身份、年月、性别、校验码信息
- linux操作知识归集