题目描述
Given a collection of 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], and[3,2,1].
class Solution {
public:
void permutation(vector<vector<int> >&ans,vector<int>& num,int index)
{
if(index==num.size()-1)
ans.push_back(num);
else
{
for(int i=index;i<num.size();i++)//i控制首位数字,index控制子数组的全排列
{
swap(num[index],num[i]);
permutation(ans,num,index+1);
swap(num[index],num[i]);//分别回到123,213,321的状态
}
}
}
public:
vector<vector<int> > permute(vector<int> &num) {
vector<vector<int> > ans;
permutation(ans,num,0);
return ans;
}
};