想思路想了很久……思路对了应该会很好做。
我的思路是这样的:只变化前n个数字,不断增加n,由2到nums.size(),使用递归直到得到所有结果
代码如下:
class Solution {
public:
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int>> v;
v.push_back(nums);
hs(v,1,nums);
return v;
}
void hs(vector<vector<int>> &v,int n,vector<int> nums){
if(n==nums.size()) return;
int m=nums[n];
nums.erase(nums.begin()+n);
for(int i=n;i>=0;i--){
nums.insert(nums.begin()+i,m);
if(i!=n) v.push_back(nums);
hs(v,n+1,nums);
nums.erase(nums.begin()+i);
}
}
};