递归
回溯:走不通就退回上一步、上一个节点
力扣78
class Solution {
List<List<Integer>> ans=new ArrayList<>();
public List<List<Integer>> subsets(int[] nums) {
ans.add(new ArrayList<Integer>());
getSets(new ArrayList<List<Integer>>(),0,nums);
return ans;
}
private void getSets(List<List<Integer>> help,int i, int[] nums) {
if(i==nums.length) return;
for(List<Integer> e:ans) help.add(e);
for(List<Integer> E:help) {
List<Integer> t=new ArrayList<Integer>(E);
t.add(nums[i]);
ans.add(t);
}
help.clear();
getSets(help, i+1, nums);
}
}