📄 6_int_permutations.js
/home/palash/git/misc/algorithms/ctci/ch08/6_int_permutations.js
Language: js • Lines: 37
/**
 * @param {number[]} nums
 * @return {number[][]}
 */
var permute = function(nums) {
    return  getPermutations(nums, nums.length - 1)
};

const getPermutations = (s, n) => {
    if(n === 0)
        return [[s[0]]]
    var permutations = []
    var remainingPermutations = getPermutations(s, n - 1)
    // console.log(n, remainingPermutations)
    var currentElement = s[n]

    for(var i = 0; i < remainingPermutations.length; i++) {
        var permutation = remainingPermutations[i]
        //        console.log("Line 19",permutation)
        var permut = [...permutation]
        permut = permut.concat(currentElement)
        permutations.push(permut)
        for(var j = 0; j < permutation.length; j++) {
            var firstPart = permutation.slice(0, j)
            firstPart.push(currentElement)
            firstPart = firstPart.concat(permutation.slice(j))
            permutations.push(firstPart)
        }
        //        permutations.push(currentElement + permutation)
    }


    return permutations
}


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