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
Post a Comment