class Solution {
public:
vector<vector<int>> res;
int *x;
void helper(vector<int> nums,int t)
{
if(t>=nums.size())
{
vector<int> re;
for(int i=0;i<=nums.size()-1;i++){
re.push_back(x[i]);
cout<<x[i];
}
cout<<endl;
res.push_back(re);
return;
}
else
{
for(int i=0;i<=nums.size()-1;i++)
{
x[t]=nums[i];
bool k=true;
for(int j=0;j<=t-1;j++)
if(x[t]==x[j]){
k=false;
break;
}
if(k) helper(nums, t+1);
}
}
}
vector<vector<int>> permute(vector<int>& nums) {
int size=(int)nums.size();
x=(int*)malloc(sizeof(int)*size);
helper(nums, 0);
return res;
}
};
class Solution {
public:
vector<vector<int>> res;
void helper(vector<int> nums,vector<int> &path,int t,vector<bool> used)
{
if(t>=nums.size())
{
for(int j=0;j<=path.size()-1;j++)
cout<<path[j];
cout<<endl;
res.push_back(path);
return;
}
for(int i=0;i<=nums.size()-1;i++)
{
if(used[i]==true)
continue;
path.push_back(nums[i]);
used[i]=true;
helper(nums, path, t+1, used);
path.pop_back();
used[i]=false;
}
}
vector<vector<int>> permute(vector<int>& nums) {
int size=(int)nums.size();
vector<bool> used (size,false);
vector<int> path;
helper(nums, path, 0, used);
return res;
}
};