版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/glw0223/article/details/88601043
题面
给定一个没有重复数字的序列,返回其所有可能的全排列。
示例:
输入:
输出:
源码
关键点:
- 递归思想:判断退出条件
- vector的insert方法的使用
class Solution {
public:
vector<vector<int>> permute(vector<int>& nums) {
if (nums.size() <= 1){
return vector<vector<int>>{nums};
}
vector<vector<int>> out;
vector<int> tmpNums = vector<int>(nums.begin() + 1, nums.end());
vector<vector<int>> permutes = permute(tmpNums);
for (vector<int>& p : permutes)
{
for (unsigned int i = 0; i <= p.size(); ++i)
{
vector<int> tmp_permute = p;
tmp_permute.insert(tmp_permute.begin() + i, nums[0]);
out.push_back(tmp_permute);
}
}
return out;
}
};
测试代码
Solution solution;
std::vector<int> arr={1,2,3};
std::vector<std::vector<int>> result1=solution.permute(arr);
cout<<"-----"<<endl;
for (int i=0;i<result1.size();i++){
std::vector<int> temp=result1[i];
for(int j=0;j<temp.size();j++){
cout<<temp[j]<<endl;
}
cout<<"-----"<<endl;
}