思路
在全排列的基础上,去重掉横向的树枝
代码
class Solution {
public:vector<int> path;vector< vector<int> > result;void backtracking(vector<int> nums, vector<bool> used){if(path.size() == nums.size()){result.push_back(path);return;}unordered_set<int> usedInLayer;for(int i = 0; i < nums.size(); i++){if(used[i]) continue;if(usedInLayer.find(nums[i]) != usedInLayer.end() ) continue;usedInLayer.insert(nums[i]);path.push_back(nums[i]);used[i] = true;backtracking(nums, used);used[i] = false;path.pop_back(); }return;}vector<vector<int>> permuteUnique(vector<int>& nums) {path.clear();result.clear();vector<bool> used(nums.size(), false);backtracking(nums, used);return result;}
};