class Solution {
public:
vector<vector<int>> permuteUnique(vector<int>& nums) {
vector<vector<int>> ret;
vector<bool> visited(nums.size());
sort(nums.begin(),nums.end()); // for duplicated. it is neccessory.
backTrace(ret,nums,vector<int>(),visited);
return ret;
}
private:
void backTrace(vector<vector<int>>& ret, vector<int>& nums,vector<int> tempList, vector<bool>& visited)
{
if(tempList.size()>= nums.size()){ret.push_back(tempList); return;}
for(int i =0 ;i<visited.size();i++)
{
if(!visited[i])
{
if(i>0 && nums[i] == nums[i-1] &&visited[i-1])
{
return;
}
tempList.push_back(nums[i]);
visited[i] = true;
backTrace(ret,nums,tempList,visited);
visited[i] = false;
tempList.pop_back();
}
}
}
};
47. Permutations II
最新推荐文章于 2020-08-11 10:13:49 发布