Learning Recursion based Permutations

 I'm revising recursion again today. I've already learned it this way, but I need to revise it this way again. Yesterday I learned Grady Algorithms. I had to learn recursion again because this topic is a little difficult, but not impossible. It is quite true that backtracking is perfect for recursion-based permutations. I am learning this because I am trying to solve LeetCode question 46. 


Finally, I found the solution:

Pardon me if any misslogic,


var permute = function(nums) {
let ans = []
let i=0
let n=nums.length-1
getPerm(nums, ans, i, n)
return ans
};

let getPerm = (nums, ans, idx, n) => {
    
    if(idx === n) {
        ans.push([...ans])
        return
    }

    for(let i=idx; i<n; i++) {
        
        let tmp = nums[idx]
        nums[idx] = nums[i]
        nums[i] = tmp

        // recursion
        
        getPerm(nums, ans, idx+1, n)

        // backtracing
        tmp = nums[idx]
        nums[idx] = nums[i]
        nums[i] = tmp
    }
}

Comments

Popular posts from this blog

C linking with Masm64

Learning MergeSort with JS