Given a set of distinct integers, return all possible subsets.
Notice
- Elements in a subset must is in non-descending order.
- The solution set must not contain duplicate subsets.
Example
If S = [1,2,3] , a solution is:
[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]
Challenge
Can do it in both recursively and iteratively?
classSolution {/** * @params:a set of numbers. * @return: A List of lists. All valid subsets. */ Publicarraylist<arraylist<integer>> Subsets (int[] nums) { //Write your code hereArrayList<ArrayList<Integer>> res =NewArraylist<arraylist<integer>>(); //Res.add (New arraylist<integer> ());ArrayList<Integer> line =NewArraylist<integer>(); Arrays.sort (Nums); for(inti = 0; I <= nums.length; i++) {Helper (res, line, I,0, Nums); } returnRes; } Public voidHelper (arraylist<arraylist<integer>> Res, arraylist<integer> line,intLenintStartint[] nums) { if(line.size () = =Len) {Res.add (NewArraylist<integer>(line)); return; } for(inti = start; i < nums.length; i++) {Line.add (nums[i]); Helper (res, line, Len, I+ 1, Nums); Line.remove (Line.size ()-1); } return; } }
Lintcode-medium-subsets