class Solution {
public:
vector<vector<int>>res;
vector<int>clist;
unordered_set<int> _set;
vector<vector<int>> permute(vector<int>& nums) {
helper(nums);
return res;
}
void helper(vector<int>& nums)
{
if(nums.size() == clist.size())
{
res.push_back(clist);
return;
}
for(int i = 0 ; i < nums.size();i++)
{
if(!_set.count(i))
{
clist.push_back(nums[i]);
_set.insert(i);
helper(nums);
_set.erase(i);
clist.erase( clist.begin() + clist.size() - 1 );
}
}
}
};
方法2:
class Solution {
public:
unordered_set<int>_set;
vector<vector<int>> reslist;
void func(int pos,vector<int>& nums,vector<int>& res)
{
for(int i = 0 ; i < nums.size() ; i++)
{
if(_set.count(nums[i]) == 0)
{
res[pos] = nums[i];
_set.insert(nums[i]);
}
else
{
continue;
}
if(pos < nums.size() - 1)
{
func(pos+1,nums,res);
}
_set.erase(nums[i]);
if(pos == nums.size() -1)
{
reslist.push_back(res);
}
}
}
vector<vector<int>> permute(vector<int>& nums) {
vector<int>res(nums.size());
func(0,nums,res);
return reslist;
}
};