思路:递归,每次交换nums里的两个数字。
class Solution {
public:
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int> > ans;
permuteDFS(nums,0,ans);
return ans;
}
void permuteDFS(vector<int>&nums,int r,vector<vector<int> >&ans)
{
if(r==nums.size()) {ans.push_back(nums);return ;}
for(int i=r;i<nums.size();++i)
{
swap(nums[r],nums[i]);
permuteDFS(nums,r+1,ans);
swap(nums[r],nums[i]);
}
}
};