Back to all solutions
#47 - Permutations II
Problem Description
Given a collection of numbers, nums, that might contain duplicates, return all possible unique permutations in any order.
Solution
/**
* @param {number[]} nums
* @return {number[][]}
*/
var permuteUnique = function(nums) {
const result = new Set();
backtrack(result, nums);
return Array.from(result).map(s => s.split(','));
};
function backtrack(result, nums, order = []) {
if (!nums.length) {
result.add(order.join());
} else {
for (let i = 0; i < nums.length; i++) {
backtrack(
result,
[...nums.slice(0, i), ...nums.slice(i + 1)],
[...order, nums[i]],
);
}
}
}