Math Fundamentals18 sections · 814 units
Open in Course

Subsets - Implementation

The pseudocode

Here is the full solution:


function subsets(nums)
    result := []
    backtrack(nums, 0, [], result)
    return result

function backtrack(nums, start, current, result)
    add copy of current to result
    for i from start to length of nums - 1
        add nums[i] to current
        backtrack(nums, i + 1, current, result)
        remove last element from current

Time: O(n×2n)O(n \times 2^n) to generate and copy all 2n2^n subsets. Space: O(n)O(n) for recursion depth.