InterviewHubPRO
Section Overview
Q73

Question 73 of 100

Part 9: Backtracking & Combinatorial Search (73 - 79)

73%
DSA Patterns (Multi-Lang)•Part 9: Backtracking & Combinatorial Search (73 - 79)

Subsets (Power Set).

In Simple Words: At each index, make binary decision: either include nums[i] or exclude nums[i]. When index reaches $N$, snapshot current subset.

  • Time: $O(N \cdot 2^N)$ | Space: $O(N)$
Multi-Language Solutions
Switch tabs or choose All
def subsets(nums: list[int]) -> list[list[int]]:
    res = []
    subset = []
    def dfs(i):
        if i >= len(nums):
            res.append(subset.copy())
            return
        # Decision to include nums[i]
        subset.append(nums[i])
        dfs(i + 1)
        # Decision to NOT include nums[i]
        subset.pop()
        dfs(i + 1)
    dfs(0)
    return res