46. Permutations

Problem


Tags: Array, Backtracking

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]]

Constraints:

  • 1 <= nums.length <= 6
  • -10 <= nums[i] <= 10
  • All the integers of nums are unique.

Code

JS

// 46. Permutations (4/13/53740)
// Runtime: 88 ms (62.66%) Memory: 41.45 MB (94.84%) 

/**
 * @param {number[]} nums
 * @return {number[][]}
 */
function permute(nums) {
    const result = [];
    backtrack([]);
    return result;

    function backtrack(current) {
        if (current.length === nums.length) return result.push(current.slice());
        for (let i = 0; i < nums.length; i++) {
            if (current.includes(nums[i])) continue;
            current.push(nums[i]);
            backtrack(current);
            current.pop();
        }
    }
}