/*
Permutations withuot duplicates
https://leetcode.com/problems/permutations/description/

Given a collection of distinct integers, return all possible permutations.

Example:

Input: [1,2,3]
Output:
[
  [1,2,3],
  [1,3,2],
  [2,1,3],
  [2,3,1],
  [3,1,2],
  [3,2,1]
]
*/

// Permutations without Duplicates
var subsetWithoutDuplicates = function (nums) {
  if (nums.lenght == 0) {
    return;
  }
  var solution = [];
  subsetWithoutDuplicatesAux(nums, [], solution);
  return solution;
};

var subsetWithoutDuplicatesAux = function (nums, current, sol) {
  if (nums.length == 0) {
    sol.push(current);
  }

  for (var i = 0; i < nums.length; i++) {
    var newCurrent = [...current, nums[i]];
    var newNums = nums.filter(function (num, index) {
      return index !== i;
    });
    subsetWithoutDuplicatesAux(newNums, newCurrent, sol);
  }
};

module.exports.subsetWithoutDuplicates = subsetWithoutDuplicates;