☰ All problems

66. Permutations

Given an array nums of distinct integers, return every possible ordering (permutation) of its elements.

Each permutation must appear exactly once; the list of permutations may be returned 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]]

Constraints

  • 1 <= nums.length <= 6
  • -10 <= nums[i] <= 10
  • All values in nums are distinct

Follow-up: How would you avoid duplicate permutations if nums could contain repeated values?

💡 Hint 1

There are n! permutations. Build them one position at a time.

💡 Hint 2

Backtracking: keep the current partial permutation and a used flag per element. At each step, try every unused element, recurse, then undo the choice.

💡 Hint 3

When the partial permutation has length n, add a copy of it to the answer.

/**
 * @param {number[]} nums
 * @return {number[][]}
 */
function permute(nums) {

}
Ctrl/⌘ + ' run · Ctrl/⌘ + Enter submit
esc