Leetcode 90. Subsets II
来源:互联网 发布:c语言api教程 编辑:程序博客网 时间:2024/06/02 09:07
iven a collection of integers that might contain duplicates, 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,2]
, a solution is:
[ [2], [1], [1,2,2], [2,2], [1,2], []]
这道题最大的特点就是不能重复。就是只能有一个2,或者两个2,但是结果中不能出现有两个一个2在result set 中
所以这个题和之前的subset的区别就是将同一个结果统一起来,
还有一种方法就是可以利用之前已经得到的结果来
public class Solution { public List<List<Integer>> subsetsWithDup(int[] nums) { List<List<Integer>> result = new ArrayList<List<Integer>>(); HashMap<Integer, Integer> record = new HashMap<Integer, Integer>(); List<Integer>tem = new ArrayList<Integer>(); int length = nums.length; if(length <= 0) return result; result.add(tem); for(int i = 0; i < length; i++){ if(record.containsKey(nums[i])){ record.put(nums[i],record.get(nums[i] + 1)); } else{ record.put(nums[i],1); } } Set<Integer> keys = record.keySet(); Iterator iterator = keys.iterator(); //we can use the original set and then add a new element and then add the result to the result set. while(iterator.hasNext()){ int number = (Integer)iterator.next(); int times = record.get(number); int size = result.size(); for(int i = 0; i < size; i++){ List<Integer> originalOne = result.get(i); for(int j = 1; j <= times; j++){ List<Integer> addednew = new ArrayList<Integer>(originalOne); int k = j; while(k > 0){ addednew.add(number); k--; } result.add(addednew); } } } return result; }}
0 0
- [LeetCode]90.Subsets II
- [Leetcode] 90. Subsets II
- LeetCode --- 90. Subsets II
- [leetcode] 90.Subsets II
- 【leetcode】90. Subsets II
- Leetcode 90. Subsets II
- 90. Subsets II LeetCode
- leetcode 90. Subsets II
- Leetcode 90. Subsets II
- LeetCode *** 90. Subsets II
- LeetCode 90. Subsets II
- leetcode 90. Subsets II
- leetcode 90. Subsets II
- [LeetCode] 90. Subsets II
- [leetcode] 90. Subsets II
- [leetcode]90. Subsets II
- Leetcode-90. Subsets II
- [LeetCode]90. Subsets II
- Binary Tree Paths
- 字符串---Count and Say
- CC150 Bit manipulation
- INNOSETUP 仿有道云安装包界面
- 动画交互设计与技术实现
- Leetcode 90. Subsets II
- Leetcode 48. Rotate Image
- 51Nod(1256乘法逆元逆元)
- 8633回文划分
- Nose+Jekins进行测试和持续集成
- LeetCode_46 Permutations
- LeetCode_47 Permutations II
- 51Nod1119机器人走方格(费马儿定理+快速幂函数) 好题
- printd函数的编写(递归)