Given a collection of distinct numbers, return all possible permutations.
For example,
[1,2,3]
have the following permutations:
[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ]解法一:
dp的思想,挨个生长随机数组。
class Solution {
public:
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int> > res;
vector<int> first(1,nums[0]);
res.push_back(first);
for(int i=1; i<nums.size(); i++){
vector<vector<int> > tmp;
tmp = permuteSub(res, nums[i]);
res.clear();
res = tmp;
}
return res;
}
vector<vector<int> > permuteSub(vector<vector<int>> pre, int num){
vector<vector<int> > res;
for(int i=0; i<pre.size(); i++){
int len = pre[i].size();
for(int j=0; j<=len;j++){
vector<int> tmp = pre[i];
tmp.insert(tmp.begin()+j, num);
res.push_back(tmp);
}
}
return res;
}
};