class Solution {
public:
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int>> ret;
if(nums.size()==0)
return ret;
vector<int> temp;
temp.push_back(nums[0]);
ret.push_back(temp);
for(int i=1;i<nums.size();i++)//增加nums中的每一个数
{
vector<vector<int>> newret;
for(int j=0;j<ret.size();j++)//对于ret中的每一个vector
{
for(int k=0;k<=ret[j].size();k++)//在ret中每个vector每个可能的位置添加nums[i]
{
vector<int> temp1(ret[j]);
temp1.insert(temp1.begin()+k,nums[i]);
newret.push_back(temp1);
}
}
ret=newret;
}
return ret;
}
};
直接调用stl中的next_permutation 但是注意调用之前要先排序
class Solution {
public:
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int>> ret;
if(nums.size()==0)
return ret;
sort(nums.begin(),nums.end());
do{
ret.push_back(nums);
}while(next_permutation(nums.begin(),nums.end()));
return ret;
}
};