package code;
/*
* 78. Subsets
*
* Medium
* Array, Backtracking, Bit Manipulation
*
* Tipslc46,39.backtrackingres
*/
import java.util.ArrayList;
import java.util.List;
public class lc78 {
public static void main(String[] args) {
int[] nums= {1,2,3};
System.out.println(subsets(nums).toString());
}
public static List subsets(int[] nums) {
List res = new ArrayList();
res.add(new ArrayList());
if(nums.length==0)
return res;
backtracking(res,nums,new ArrayList(),-1);
return res;
}
public static void backtracking(List res, int[] nums, List l, int start){
if(start>=nums.length)
return;
for (int i = start+1; i < nums.length ; i++) {
l.add(nums[i]);
res.add(new ArrayList(l));
backtracking(res,nums,l,i);
l.remove((Integer)nums[i]);
}
}
}