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].
采用递归, 在num中拿出1个数字放在第一个,然后剩下的数字做一个全排列
代码如下:
class Solution {
public:
vector<vector<int> > permute(vector<int> &num) {
int N = num.size();
vector<vector<int> > ret;
if(N == 1)
{
ret.push_back(num);
return ret;
}
vector<vector<int> > post;
vector<int> cur;
vector<int> tmp;
for(int i = 0; i < N; i++)
{
cur = num;
cur.erase(cur.begin()+i);
post = permute(cur);
for(int j = 0; j < post.size(); j++)
{
tmp = post[j];
tmp.insert(tmp.begin(), num[i]);
ret.push_back(tmp);
}
}
return ret;
}
};