Given an array `nums` of distinct integers, return all the possible permutations. You can return the answer in any order. **Example 1:** Input: `nums = [1,2,3]` Output: `[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]` **Example 2:** Input: `nums = [0,1]` Output: `[[0,1],[1,0]]` **Example 3:** Input: `nums = [1]` Output: `[[1]]`
Backtracking / DFS
We build permutations one number at a time. At each step, we pick one 'unused' number from the source array, add it to our current path, and recurse. Once we explore that path, we 'backtrack' by removing the number to try a different candidate.