想思路想了很久……思路對了應該會很好做。
我的思路是這樣的:只變化前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);}}
};