78. Subsets
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], [] ]
---
Compare to leet 77, combine
---
public class Solution { public ArrayList<ArrayList<Integer>> subsets(int[] S) { Arrays.sort(S); return helper(S, S.length-1); } private ArrayList<ArrayList<Integer>> helper(int[] S, int index) { if(index < -1) return null; ArrayList<ArrayList<Integer>> rst; // Base case if(index == -1){ rst = new ArrayList<ArrayList<Integer>>(); rst.add(new ArrayList<Integer>()); // empty set return rst; } // recursive rst = helper(S, index-1); int val = S[index]; ArrayList<ArrayList<Integer>> moreSubset = new ArrayList<ArrayList<Integer>>(); for(ArrayList<Integer> subset : rst){ ArrayList<Integer> newSubset = new ArrayList<Integer>(); newSubset.addAll(subset); newSubset.add(val); moreSubset.add(newSubset); } rst.addAll(moreSubset); return rst; } }
浙公网安备 33010602011771号