Skip to content

Commit dfb01e6

Browse files
authored
Create 47-permutations-ii.js
1 parent d55e1bd commit dfb01e6

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

47-permutations-ii.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number[][]}
4+
*/
5+
const permuteUnique = function(nums) {
6+
const result = [];
7+
if (nums == null || nums.length === 0) {
8+
return result;
9+
}
10+
const map = {};
11+
for (let n of nums) {
12+
map[n] = map.hasOwnProperty(n) ? map[n] + 1 : 1;
13+
}
14+
permuteUniqueHelper(map, nums.length, [], 0, result);
15+
return result;
16+
};
17+
18+
function permuteUniqueHelper(m, l, p, i, r) {
19+
if (l === i) {
20+
r.push(p.slice(0, l));
21+
return;
22+
}
23+
for (let key of Object.keys(m)) {
24+
if (m[key] > 0) {
25+
m[key] = m[key] - 1;
26+
p[i] = key;
27+
permuteUniqueHelper(m, l, p, i + 1, r);
28+
m[key] = m[key] + 1;
29+
}
30+
}
31+
}

0 commit comments

Comments
 (0)