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 =
If S =
[1,2,3]
, a solution is:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]Understand the problem:
As described in the problem, given a set of DISTINCT integers, S, return all possible subsets. Elements in a subset must be in non-descending order. The solution set must not contain duplicate subsets.
Recursive Solution:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | public class Solution { public ArrayList<ArrayList<Integer>> subsets( int [] S) { ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>(); if (S == null || S.length == 0 ) return result; Arrays.sort(S); result.add( new ArrayList<Integer>()); ArrayList<Integer> temp = new ArrayList<Integer>(); subsetsHelper(S, 0 , result, temp); return result; } private void subsetsHelper( int [] S, int start, ArrayList<ArrayList<Integer>> result, ArrayList<Integer> temp) { if (start >= S.length) return ; for ( int i = start; i < S.length; i++) { temp.add(S[i]); result.add( new ArrayList<Integer>(temp)); subsetsHelper(S, i + 1 , result, temp); temp.remove(temp.size() - 1 ); } } } |
No comments:
Post a Comment