【Java】subsets
来源:互联网 发布:如何关闭4g网络 编辑:程序博客网 时间:2024/04/30 13:37
/** * Created on 16/6/6. */import java.util.ArrayList;import java.util.Arrays;public class getSubsets { public static void main(String[] args) { ArrayList<Integer> s = new ArrayList<Integer>(); s.add(1); s.add(2); s.add(3); ArrayList<ArrayList<Integer>> allsubsets = getSubsets(s); System.out.println(allsubsets); int[] nums = {1,2,3}; ArrayList<ArrayList<Integer>> subsets = subsets(nums); System.out.println(subsets); ArrayList<ArrayList<Integer>> anotherSubsets = anotherSubsets(nums); System.out.println(anotherSubsets); } public static ArrayList<ArrayList<Integer>> anotherSubsets(int[] nums) { if (nums == null) { return null; } Arrays.sort(nums); ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>(); for (int i = 0; i < nums.length; i++) { ArrayList<ArrayList<Integer>> temp = new ArrayList<>(); for (ArrayList<Integer> a : result) { temp.add(new ArrayList<Integer>(a)); } for (ArrayList<Integer> a : temp) { a.add(nums[i]); } ArrayList<Integer> single = new ArrayList<Integer>(); single.add(nums[i]); temp.add(single); result.addAll(temp); System.out.println(result); } result.add(new ArrayList<>()); return result; } public static ArrayList<ArrayList<Integer>> subsets(int[] nums) { ArrayList<ArrayList<Integer>> list = new ArrayList<>(); Arrays.sort(nums); backTrack(list, new ArrayList<>(), nums, 0); return list; } public static void backTrack(ArrayList<ArrayList<Integer>> list, ArrayList<Integer> tmpList, int[] nums, int start) { list.add(new ArrayList<>(tmpList)); for (int i = start; i < nums.length; i++) { tmpList.add(nums[i]); backTrack(list, tmpList, nums, i + 1); tmpList.remove(tmpList.size() - 1); } } public static ArrayList<ArrayList<Integer>> getSubsets(ArrayList<Integer> subset) { ArrayList<ArrayList<Integer>> sub = new ArrayList<>(); int m = 1 << subset.size(); for (int i = 0; i < m; i++) { ArrayList<Integer> s = new ArrayList<>(); int k = i; int index = 0; while (k > 0) { if ((k & 1) > 0) { s.add(subset.get(index)); } k >>= 1; index ++; } sub.add(s); } return sub; }}
0 0
- Subsets Java
- Subsets (Java)
- (java)Subsets
- 【Java】subsets
- [4]78. Subsets/90. Subsets II(Java)
- [Leetcode] Subsets (Java)
- [Leetcode] Subsets II (Java)
- Subsets II Java
- Subsets II (Java)
- LeetCode(078) Subsets (Java)
- [LeetCode][Java] Subsets
- [LeetCode][Java] Subsets II
- [leetcode-78]subsets(java)
- (java)Subsets II
- 【leetcode】78. Subsets【java】
- LeetCode78. Subsets java solution
- [leetcode]78. Subsets(Java)
- 78.Subsets leetcode java
- 字典树(Trie树)模版
- 二叉查找树/删除结点操作
- UML类图符号 各种关系说明以及举例(转载)
- Java 金额封装bean
- 初学网络协议
- 【Java】subsets
- C语言结构体
- Android 替换系统里的默认字体与开机画面
- 剑指offer(六十二)之二叉搜索树的第k个结点
- 自定义RedioButton样式
- 更改ProgressBar颜色
- 1018. 锤子剪刀布 (20)
- 地理空间距离计算优化
- HTML5学习之FileReader接口