--- title: '78. Subsets' description: Given an integer array nums of unique elements, return all possible subsets (the power set) icon: dot topics: - { name: "Array", slug: "array" } - { name: "Backtracking", slug: "backtracking" } - { name: "Bit Manipulation", slug: "bit-manipulation" } issue: "https://github.com/prdlk/leetcode/issues/149" sidebar: label: 'Subsets' badge: 'Medium' --- ### Example 1: - Input: `nums = [1,2,3]` - Output: `[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]` ### Example 2: - Input: `nums = [0]` - Output: `[[],[0]]` ### Constraints: - `1 <= nums.length <= 10` - `-10 <= nums[i] <= 10` - All the numbers of `nums` are unique. ## Solution ```py class Solution: def subsets(self, nums: list[int]) -> list[list[int]]: res = [] def backtrack(i, path): res.append(path[:]) for num_idx in range(i, len(nums)): path.append(nums[num_idx]) backtrack(num_idx + 1, path) path.pop() backtrack(0, []) return res ```