class Solution {
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> result = new ArrayList<>();
List<Integer> temp = new ArrayList<>();
findAllSubsets(nums, 0, result, temp);
return result;
}
public void findAllSubsets(int[] nums, int index, List<List<Integer>> result, List<Integer> temp)
{
// base condition
if(index == nums.length)
{
result.add(new ArrayList<>(temp));
return;
}
// Pick the current element into subset
temp.add(nums[index]);
findAllSubsets(nums, index+1, result, temp);
// do not pick the current element into subset
temp.remove(temp.size()-1);
findAllSubsets(nums, index+1, result, temp);
return;
}
}