[LeetCode] Subsets
来源:互联网 发布:只有我知未删减在线看 编辑:程序博客网 时间:2024/06/07 00:59
Total Accepted: 10972 Total Submissions: 40240
Given a set of distinct integers, S, 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 S = [1,2,3]
, a solution is:
[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]
public class Solution { public ArrayList<ArrayList<Integer>> subsets(int[] S) { Arrays.sort(S); return getSubsets(S, 0); } public ArrayList<ArrayList<Integer>> getSubsets(int[] S, int start_index) { ArrayList<ArrayList<Integer>> allSubsets; if (start_index == S.length) { allSubsets = new ArrayList<ArrayList<Integer>>(); allSubsets.add(new ArrayList<Integer>()); } else { allSubsets = getSubsets(S, start_index + 1); ArrayList<ArrayList<Integer>> tmpSubsets = new ArrayList<ArrayList<Integer>>(); for (ArrayList<Integer> subset : allSubsets) { ArrayList<Integer> s = new ArrayList<Integer>(); s.add(S[start_index]); s.addAll(subset); tmpSubsets.add(s); } allSubsets.addAll(tmpSubsets); } return allSubsets; } }
DFS
public class Solution { public ArrayList<ArrayList<Integer>> subsets(int[] S) { ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>(); ArrayList<Integer> path = new ArrayList<Integer>(); list.add(new ArrayList<Integer>()); Arrays.sort(S); dfs(S, list, path, 0); return list; } public void dfs(int[] S, ArrayList<ArrayList<Integer>> list, ArrayList<Integer> path, int index) { for (int i = index; i < S.length; i++) { path.add(S[i]); list.add(new ArrayList<Integer>(path)); dfs(S, list, path, i + 1); path.remove(path.size() - 1); } }}
public class Solution { public ArrayList<ArrayList<Integer>> subsets(int[] S) { ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>(); ArrayList<Integer> path = new ArrayList<Integer>(); list.add(new ArrayList<Integer>()); Arrays.sort(S); dfs(S, list, path, 0); return list; } public void dfs(int[] S, ArrayList<ArrayList<Integer>> list, ArrayList<Integer> path, int index) { if (index < S.length) { path.add(S[index]); list.add(new ArrayList<Integer>(path)); dfs(S, list, path, index + 1); path.remove(path.size() - 1); dfs(S, list, path, index + 1); } }}
0 0
- 【LeetCode】 Subsets Subsets II
- 【LeetCode】Subsets & Subsets II
- LeetCode Subsets && Subsets II
- LeetCode Subsets && Subsets II
- LeetCode-Subsets & Subsets II
- LeetCode: Subsets
- LeetCode Subsets
- [Leetcode] Subsets
- LeetCode : Subsets
- [LeetCode] Subsets
- Leetcode: Subsets
- Leetcode: Subsets ||
- [leetcode] subsets
- Leetcode - Subsets
- [LeetCode]Subsets
- LeetCode-Subsets
- LeetCode - Subsets
- LeetCode | Subsets
- conn / as sysdba 出现ORA-01031: insufficient privileges的解决方案
- linux常用svn命令
- oracle 11g 新特性1
- Android开发之让Activity以对话框的方式出现
- 浅谈C++中多态与java中多态机制
- [LeetCode] Subsets
- Lua 常用库
- hdu 3714 Error Curves 2010年成都赛区
- Web应用程序项目XX已配置为使用IIS
- 韩信点兵背后的思想
- Prim算法+Kruskal算法
- leetcode第一刷_Two sum
- ACM数论总结
- 使用share SDK实现QQ空间授权登录、分享(1.x版本)