#78.Subsets [LeetCode Grind 75 in Java]

[Problem Link] https://leetcode.com/problems/subsets/

class Solution {
    private List<List<Integer>> ans;

    public void generate(int i, int[] nums, int n, ArrayList<Integer> cur){
        if(i == n){
            //store final formed subset
            ArrayList<Integer> st = new ArrayList<>();
            st.addAll(cur);
            ans.add(st);
            return;
        }

        //not take
        generate(i + 1, nums, n, cur);

        //take
        cur.add(nums[i]);
        generate(i + 1, nums, n, cur);

        int li = cur.size() - 1;
        cur.remove(li);
    }

    public List<List<Integer>> subsets(int[] nums) {
        ans = new ArrayList<>();
        int n = nums.length;
        generate(0, nums, n, new ArrayList<Integer>());
        return ans;
    }
}