Subsets

LeetCode 78 · View on LeetCode

Backtracking: at each index, choose to include or exclude the current element. Build the subset incrementally and backtrack after each recursive call.

def subsets(nums: list[int]) -> list[list[int]]:
    result = []
    def backtrack(start: int, path: list[int]):
        result.append(path[:])
        for i in range(start, len(nums)):
            path.append(nums[i])
            backtrack(i + 1, path)
            path.pop()
    backtrack(0, [])
    return result

if __name__ == '__main__':
    print(subsets([1, 2, 3]))
    # [[], [1], [1,2], [1,2,3], [1,3], [2], [2,3], [3]]

    print(subsets([0]))
    # [[], [0]]
© 2026 ByteLearn.dev. Free courses for developers. · Privacy