class Solution { public List<List<Integer>> subsets(int[] nums) { List<List<Integer>> res=new ArrayList<>(); bs(res,new ArrayList<Integer>(),nums,0); return res; } private void bs(List<List<Integer>> res,List<Integer> tmp,int[] nums,int start){ res.add(new ArrayList<>(tmp)); for(int i=start;i<nums.length;i++){ tmp.add(nums[i]); bs(res,tmp,nums,i+1); tmp.remove(tmp.size()-1); } } }