思路
- 需要对当前序列未访问索引进行标记
- 需要去重,同层重复元素不能取
- 传入参数最好为引用,减少内存开销
代码
class Solution {
vector<vector<int>> ans;
vector<int> path;
void backtracing(vector<int>& nums,vector<int>&used){
if(path.size()==nums.size()){
ans.emplace_back(path);
return;
}
for(int i=0;i<nums.size();++i){
if(used[i]==false){
if(i>0&&nums[i]==nums[i-1]&&used[i-1]==false)
continue;
else{
path.emplace_back(nums[i]);
used[i]=1;
backtracing(nums,used);
used[i]=0;
path.pop_back();
}
}
}
}
public:
vector<vector<int>> permuteUnique(vector<int>& nums) {
vector<int> used(nums.size());
sort(nums.begin(),nums.end());
backtracing(nums,used);
return ans;
}
};