Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 480ae3f

Browse files
Diego Flores CastilloDiego Flores Castillo
Diego Flores Castillo
authored and
Diego Flores Castillo
committed
permute-009 (fix): rewrite permute
1 parent 671c504 commit 480ae3f

File tree

3 files changed

+67
-25
lines changed

3 files changed

+67
-25
lines changed

.idea/workspace.xml

Lines changed: 15 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

LeetcodeProblems/Algorithms/Permutations.js

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,24 +18,27 @@ Output:
1818
]
1919
*/
2020

21-
var permute = function (nums) {
22-
return permuteAux(nums, 0, [], new Set());
21+
const permute = (nums) => {
22+
23+
return auxPermute(nums, 0, [], new Set());
24+
2325
};
2426

25-
var permuteAux = function (nums, pos, currentSol, set) {
27+
const auxPermute = (nums, pos, currentVal, set) => {
2628
if (pos === nums.length) {
27-
return [currentSol];
29+
return [currentVal];
2830
}
29-
var ret = [];
30-
for (var i = 0; i < nums.length; i++) {
31+
let result = [];
32+
for (let i = 0; i < nums.length; i++) {
3133
if (!set.has(nums[i])) {
3234
set.add(nums[i]);
33-
var sol = permuteAux(nums, pos + 1, currentSol.concat(nums[i]), set);
34-
ret = [...ret, ...sol];
35+
const combinations = auxPermute(nums, pos + 1, currentVal.concat(nums[i]), set);
36+
result = [...result, ...combinations];
3537
set.delete(nums[i]);
3638
}
3739
}
38-
return ret;
40+
return result;
41+
3942
};
4043

4144
module.exports.permute = permute;
Lines changed: 40 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,45 @@
1-
const assert = require('assert');
2-
const permute = require('../../LeetcodeProblems/Algorithms/Permutations').permute;
1+
const assert = require("assert");
2+
const permute =
3+
require("../../LeetcodeProblems/Algorithms/Permutations").permute;
34

45
function test() {
5-
assert.deepEqual(permute([]), [ [] ]);
6-
assert.deepEqual(permute([1]), [ [ 1 ] ]);
7-
assert.deepEqual(
8-
permute([1,2,3]),
9-
[
10-
[ 1, 2, 3 ],
11-
[ 1, 3, 2 ],
12-
[ 2, 1, 3 ],
13-
[ 2, 3, 1 ],
14-
[ 3, 1, 2 ],
15-
[ 3, 2, 1 ]
16-
]
17-
);
6+
//assert.deepEqual(permute([]), [[]]);
7+
assert.deepEqual(permute([1]), [[1]]);
8+
assert.deepEqual(permute([1, 2]), [[1, 2], [2, 1]]);
9+
assert.deepEqual(permute([1, 2, 3]), [
10+
[1, 2, 3],
11+
[1, 3, 2],
12+
[2, 1, 3],
13+
[2, 3, 1],
14+
[3, 1, 2],
15+
[3, 2, 1],
16+
]);
17+
assert.deepEqual(permute([1, 2, 3, 4]), [
18+
[1, 2, 3, 4],
19+
[1, 2, 4, 3],
20+
[1, 3, 2, 4],
21+
[1, 3, 4, 2],
22+
[1, 4, 2, 3],
23+
[1, 4, 3, 2],
24+
[2, 1, 3, 4],
25+
[2, 1, 4, 3],
26+
[2, 3, 1, 4],
27+
[2, 3, 4, 1],
28+
[2, 4, 1, 3],
29+
[2, 4, 3, 1],
30+
[3, 1, 2, 4],
31+
[3, 1, 4, 2],
32+
[3, 2, 1, 4],
33+
[3, 2, 4, 1],
34+
[3, 4, 1, 2],
35+
[3, 4, 2, 1],
36+
[4, 1, 2, 3],
37+
[4, 1, 3, 2],
38+
[4, 2, 1, 3],
39+
[4, 2, 3, 1],
40+
[4, 3, 1, 2],
41+
[4, 3, 2, 1],
42+
]);
1843
}
1944

2045
module.exports.test = test;

0 commit comments

Comments
 (0)