想思路想了很久……思路对了应该会很好做。
我的思路是这样的:只变化前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);}}
};