【题目描述】
给定一个 没有重复 数字的序列,返回其所有可能的全排列。
【示例】
输入: [1,2,3]
输出:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
【代码】
class Solution {
public:
void perm(vector<vector<int> > &res, vector<int>& nums, int start, int end)
{
if(start == end)
res.push_back(nums);
for(int i = start; i <= end; i++)
{
swap(nums[start], nums[i]);
perm(res, nums, start+1, end);
swap(nums[start], nums[i]);
}
}
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int>> res;
perm(res,nums, 0,nums.size()-1);
return res;
}
};
//STL, 不过说实话现成的函数,效率比自己写的还是快好多
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int>> res;
sort(nums.begin(), nums.end());
do {
res.emplace_back(nums);
} while (next_permutation(nums.begin(), nums.end()));
return res;
}
版权声明:本文为fujch3原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。