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]
.
思路:假设有集合[1,2,3],来一个4,则有集合[4,1,2,3]、[1,4,2,3]、[1,2,4,3]、[1,2,3,4]。故code如下:
class Solution {
public:
vector<vector<int> > permute(vector<int> &num) {
vector<vector<int> > aa,tmp;
vector<int> a;
aa.clear();
if(num.empty())
{
return aa;
}
int len = num.size();
int i,j,k,m,co,t;
for(i=0; i<len; ++i)
{
a.clear();
if (aa.empty())
{
a.push_back(num[i]);
aa.push_back(a);
continue;
}
tmp.clear();
co = aa.size();
for(j=0; j<co; ++j)
{
m = aa[j].size();
for(k=0; k<=m; ++k)
{
a.clear();
for(t=0; t<k; ++t)
{
a.push_back(aa[j][t]);
}
a.push_back(num[i]);
for( ; t<m; ++t)
{
a.push_back(aa[j][t]);
}
tmp.push_back(a);
}
}
aa = tmp;
}
return aa;
}
};