题目:
题解:
class Solution {
public:vector<vector<int>> permuteUnique(vector<int>& nums) {dfs(nums, 0);return res;}
private:vector<vector<int>> res;void dfs(vector<int> nums, int x) {if (x == nums.size() - 1) {res.push_back(nums); // 添加排列方案return;}set<int> st;for (int i = x; i < nums.size(); i++) {if (st.find(nums[i]) != st.end())continue; // 重复,因此剪枝st.insert(nums[i]);swap(nums[i], nums[x]); // 交换,将 nums[i] 固定在第 x 位dfs(nums, x + 1); // 开启固定第 x + 1 位元素swap(nums[i], nums[x]); // 恢复交换}}
};