package g0001_0100.s0078_subsets; // #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Array #Bit_Manipulation #Backtracking // #Algorithm_II_Day_9_Recursion_Backtracking #Udemy_Backtracking/Recursion // #Big_O_Time_O(2^n)_Space_O(n*2^n) #2024_11_11_Time_0_ms_(100.00%)_Space_43_MB_(12.48%) import java.util.ArrayList; import java.util.List; @SuppressWarnings("java:S5413") public class Solution { public List> subsets(int[] nums) { List> res = new ArrayList<>(); solve(nums, new ArrayList<>(), res, 0); return res; } private void solve(int[] nums, List temp, List> res, int start) { res.add(new ArrayList<>(temp)); for (int i = start; i < nums.length; i++) { temp.add(nums[i]); solve(nums, temp, res, i + 1); temp.remove(temp.size() - 1); } } }