Generate all possible permutations of a list

by Krishna Ananthi

JavaScript

function permute(nums) {
  this.res = []
  this.backtrack = function (nums, idx) {
    if (idx === nums.length) {
      this.res.push([...nums])
      return
    }
    for (let i = idx; i < nums.length; i++) {
      console.log(idx, nums[idx], nums[i])
      ;[nums[idx], nums[i]] = [nums[i], nums[idx]]
      console.log(idx + 1, nums[idx], nums[i])
      this.backtrack(nums, idx + 1)
      ;[nums[idx], nums[i]] = [nums[i], nums[idx]]
      console.log(idx + 1, nums[idx], nums[i])
    }
    this.backtrack(nums, 0)
    return this.res
  }
  backtrack(nums)
}

console.log(permute([1, 2, 3]))