题目:
解答:
采用递归,每次第一个元素和后面的元素进行交换,然后生成除第一个元素以外的后面的排列。
代码:
class Solution {
public:
vector<vector<int> > permute(vector<int> &num) {
int size = num.size();
vector<vector<int> > res;
per(num, res, 0);
return res;
}
private:
void per(vector<int> &num, vector<vector<int> > &res, int k)
{
if (k == num.size())
{
res.push_back(num);
}
for (int i = k; i < num.size(); i++)
{
swap(num[k], num[i]);
per(num, res, k + 1);
swap(num[k], num[i]);
}
}
void swap(int &a, int &b)
{
int temp;
temp = a;
a = b;
b = temp;
}
};