Permutations
Given a collection of distinct numbers, return all possible permutations.
For example,
[1,2,3]
have the following permutations:
[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ]
class Solution {
public:
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int> >res;
vector<int> out;
vector<int> visited(nums.size(),0);
permuteDFS(nums,0,visited,res,out);
return res;
}
void permuteDFS(vector<int>& nums,int level,vector<int> &visited,vector<vector<int> >&res,vector<int> &out){
if(level==nums.size()) res.push_back(out);
else
{
for(int i=0;i<nums.size();i++)
{
if(visited[i]==0)
{
visited[i]=1;
out.push_back(nums[i]);
permuteDFS(nums,level+1,visited,res,out);
out.pop_back();
visited[i]=0;
}
}
}
}
};