public class Solution {
public List> subsets(int[] nums) {
List> res = new ArrayList>();
if(nums == null) return res;
res.add(new ArrayList());
for(int i = 0; i < nums.length; i++){
int size = res.size();
for(int j = 0; j < size; j++){
List copy = new ArrayList(res.get(j));
copy.add(nums[i]);
res.add(copy);
}
}
return res;
}
}
public class Solution {
public List> subsets(int[] nums) {
List> res = new ArrayList>();
List list = new ArrayList();
dfs(nums, 0, res, list);
return res;
}
public void dfs(int[] nums, int pos, List> res, List list){
res.add(new ArrayList(list));
for(int i = pos; i < nums.length; i++){
list.add(nums[i]);
dfs(nums, i+1, res, list);
list.remove(list.size()-1);
}
}
}