- Published on
[LeetCode 78] Subsets
Problem
Given an integer array nums of unique elements, return all possible subsets (the power set).
The solution set must not contain duplicate subsets. Return the solution in any order.
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.
Thoughts
- Draw a decision tree, we can find that for each number, we can either include it or not include it in the final results
- We can use DFS and backtracking to implement above ideas
TypeScript
function subsets(nums: number[]): number[][] {
let res: number[][] = [];
let cur: number[] = [];
const dfs = (i: number) => {
if(i >= nums.length){
res.push([...cur])
return
}
// we add cur index value
cur.push(nums[i])
dfs(i + 1)
// we dont add cur inde value
cur.pop()
dfs(i + 1)
}
dfs(0)
return res;
};