给定一个没有重复数字的序列,返回其所有可能的全排列。
//方法1
class Solution
{
public:
vector<vector<int>> permutation(vector<int>& nums)
{
vector<int> temp=nums;
vector<vector<int>> ans;
do
{
ans.push_back(temp);
next_permutation(temp.begin(),temp.end());//调用函数
}while(temp!=nums);
return ans;
}
}
//方法2
class Solution
{
public:
vector<vector<int>> ans;
void func(vector<int>& nums,int start,int end)
{
if(start==end) ans.push_back(nums);
else
{
for(int i=start;i<=end;i++)
{
swap(nums[i],nums[start]);
func(nums,start+1,end);
swap(nums[i],nums[start]);
}
}
}
vector<vector<int>> permutation(vector<int>& nums)
{
if(nums.size()<=1) return {nums};
func(nums,0,nums.end()-1);
return ans;
}
}