原题:
Given a collection of distinct integers, return all possible permutations.
Example:
Input: [1,2,3] Output: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ]
求出给出数列的全排列,递归完美解决,结果:
Success
Runtime: 4 ms, faster than 99.99% of C++ online submissions for Permutations.
Memory Usage: 9.4 MB, less than 64.18% of C++ online submissions for Permutations.
代码:
class Solution {
public:
vector<vector<int>> re;
vector<vector<int>> permute(vector<int>& nums) {
vector<bool> dict(nums.size(),0);
vector<int> init;
getp(nums,init,dict,nums.size());
return re;
}
void getp(vector<int>& original,vector<int>& cur,vector<bool>& dict,int remain){
if(!remain){re.push_back(cur);return;}
for(int i=0;i<original.size();i++){
if(!dict[i]){
cur.push_back(original[i]);
dict[i]=1;
getp(original,cur,dict,remain-1);
dict[i]=0;
cur.pop_back();
}
}
}
};