/** * @param {number[]} nums * @return {number[][]} */ var permuteUnique = function (nums) { const result = []; const used = newArray(nums.length).fill(false); nums.sort((a, b) => a - b);
functionbacktrack(path) { if (path.length === nums.length) { result.push([...path]); return; } for (let i = 0; i < nums.length; i++) { if (used[i]) continue; // 剪枝:同层跳过重复元素 if (i > 0 && nums[i] === nums[i - 1] && !used[i - 1]) continue; used[i] = true; path.push(nums[i]); backtrack(path); path.pop(); used[i] = false; } }