参考资料:
注意的问题:
思路:
第一个数和其他数进行相交换,然后对剩余的其他数做一下全排列。然后将第一个数和其他数相交换回来,为下次做准备。
什么时候输出结果呢?
当begin==end时,可进行保存和输出。
class Solution {
public:
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int> > result;
int nLen=nums.size();
permuteCore(nums,result,0,nLen-1);
return result;
}
void permuteCore(vector<int>& nums,vector<vector<int> >& result,int begin,int end)
{
if(begin==end)
result.push_back(nums);
else
{
for(int i=begin;i<=end;i++)
{
swap(nums[begin],nums[i]);
permuteCore(nums,result,begin+1,end);
swap(nums[begin],nums[i]);
}
}
}
};