permute

leetCode 172

by sandfresh

JavaScript

function permute(nums) {

  if (nums.length == 0)
    return [];

  let used = [];
  let permutation = [];

  function dfs(nums) {
    if (nums.length == 0) {
      permutation.push(used.slice());
    }
    for (let i = 0; i < nums.length; i++) {  
      used.push(nums.splice(i, 1)[0]);
      dfs(nums);
      //back tracking , restore before splice state
      nums.splice(i, 0, used.pop());
    }

  }
  dfs(nums);
  return permutation;
}

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