Unique Subsets
来源:互联网 发布:学电脑编程能干什么 编辑:程序博客网 时间:2024/06/06 03:07
Unique Subsets
Given a list of numbers that may has duplicate numbers, return all possible subsets.
Example
If S = [1,2,2]
, a solution is:
[ [2], [1], [1,2,2], [2,2], [1,2], []]
public ArrayList<ArrayList<Integer>> subsetsWithDup(ArrayList<Integer> S) { ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>(); if (S == null || S.size() == 0) { return result; } Collections.sort(S); ArrayList<Integer> path = new ArrayList<Integer>(); dfs(result, path, S, 0); return result; } private void dfs(ArrayList<ArrayList<Integer>> result, ArrayList<Integer> path, ArrayList<Integer> S, int pos){ result.add(new ArrayList<Integer>(path)); for (int i = pos; i < S.size(); i++) { if (i > pos && S.get(i) == S.get(i - 1)) { continue; } path.add(S.get(i)); dfs(result, path, S, i + 1); path.remove(path.size() - 1); } }思路:
duplication发生在当取完一种,后面是重复数字,不能再取。横向比较
0 0
- Unique Subsets
- Unique Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- Subsets
- HoloGraphLibrary 源码解析
- Linux 学习day01-day02
- linux 剪文件
- Maven 聚合与继承
- Objective-C中使用@try处理异常
- Unique Subsets
- window.ShowModalDialog使用详解
- c/c++产生随机数
- 黑马程序员——总结第一次面试遇到的问题
- CircularFloatingActionMenu 源码解析
- HDU 1087 Super Jumping! Jumping! Jumping! (线性dp)
- C++一些注意点之new和malloc
- shell数组与字符串操作
- opencv中meanshift和camshift例子的应用