Leetcode•Aug 10, 2025
Permutations II
Hazrat Ali
Leetcode
Given a collection of numbers, nums
, that might contain duplicates, return all possible unique permutations in any order.
Example 1:
Input: nums = [1,1,2] Output: [[1,1,2], [1,2,1], [2,1,1]]
Example 2:
Input: nums = [1,2,3] Output: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
Solution
/**
* @param {number[]} nums
* @return {number[][]}
*/
const permuteUnique = nums => {
const results = [];
nums.sort((a, b) => a - b);
backtracking(nums, {}, [], results);
return results;
};
const backtracking = (nums, used, solution, results) => {
if (solution.length === nums.length) {
results.push(solution.slice());
return;
}
for (let i = 0; i < nums.length; i++) {
if (used[i] || (i > 0 && nums[i] === nums[i - 1] && !used[i - 1])) {
continue;
}
solution.push(nums[i]);
used[i] = true;
backtracking(nums, used, solution, results);
solution.pop();
used[i] = false;
}
};