feat: Added permutations problem in js
This commit is contained in:
parent
b6a9accd81
commit
c849ae308d
58
permutations/nodejs/index.js
Normal file
58
permutations/nodejs/index.js
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
/*
|
||||||
|
* 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]
|
||||||
|
*
|
||||||
|
* ]
|
||||||
|
*/
|
||||||
|
|
||||||
|
const { assert } = require('../../util/js');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {number[]} nums
|
||||||
|
* @return {number[][]}
|
||||||
|
*/
|
||||||
|
const permute = function(nums) {
|
||||||
|
|
||||||
|
const permuRecursive = (soFar, rest, perm) => {
|
||||||
|
if (rest.length === 0) {
|
||||||
|
perm.push(soFar);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(let i = 0; i < rest.length; i++) {
|
||||||
|
const rem = [...rest.slice(0, i), ...rest.slice(i+1)];
|
||||||
|
permuRecursive([...soFar, rest[i]], rem, perm);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const result = [];
|
||||||
|
permuRecursive([], nums, result);
|
||||||
|
return result;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Test Case 1
|
||||||
|
* Input: [1,2,3]
|
||||||
|
* Output:
|
||||||
|
* [
|
||||||
|
* [1,2,3],
|
||||||
|
* [1,3,2],
|
||||||
|
* [2,1,3],
|
||||||
|
* [2,3,1],
|
||||||
|
* [3,1,2],
|
||||||
|
* [3,2,1]
|
||||||
|
*
|
||||||
|
* ]
|
||||||
|
*/
|
||||||
|
x = [1,2,3];
|
||||||
|
sol = [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]];
|
||||||
|
assert(JSON.stringify(permute(x)) === JSON.stringify(sol), `Output: ${JSON.stringify(sol)}`);
|
Loading…
Reference in New Issue
Block a user