Given a collection of 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], and [3,2,1].
全排列的问题,分析可以参考这篇文章
这道题目的题解:
class Solution {
public:
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int>> result;
premuteRe(nums,0,result);
return result;
}
void premuteRe(vector<int> & nums,int offset,vector<vector<int>> &result)
{
if(nums.size()==offset+1)
{
result.push_back(nums);
return ;
}
vector<int>::iterator base=nums.begin()+offset;
vector<int>::iterator iter=base;
for(;iter!=nums.end();iter++)
{
swap(*base,*iter);
premuteRe(nums,offset+1,result);
swap(*base,*iter);
}
}
};
runtime:12ms