子集
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:
输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]
我的:
ArrayList<ArrayList<Integer>> result = new ArrayList<>(); public ArrayList<ArrayList<Integer>> subsets(int[] S) { int length = S.length; ArrayList<Integer> temp = new ArrayList<>(); Arrays.sort(S); //i为子集的长度,一次算一个长度的 for (int i=0;i<=length;i++) { subsetsHelper(S,i,0,temp); } return result; } private void subsetsHelper(int[] S,int length,int start,ArrayList<Integer> temp) { //剩余长度为0 if (0 == length) { //要new一个在加入结果集 result.add(new ArrayList<>(temp)); } for (int i = start; i < S.length; i++) { temp.add(S[i]); subsetsHelper(S, length - 1, i + 1, temp); temp.remove(temp.size() - 1); } }