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:首先选择一个,之后对数组的剩下部分进行全排序
vector<vector<int> > permute(vector<int> &num)
{
vector<vector<int> > result;
if(num.size() == 0)
{
return result;
}
permuteCore(num, 0, result);
return result;
}
void permuteCore(vector<int> &num, int index, vector<vector<int> > &result)
{
if(index == (int)num.size())
{
result.push_back(num);
return;
}
for(int i = index; i < (int)num.size(); i++)
{
swap(num[index], num[i]);
permuteCore(num, index + 1, result);
swap(num[index], num[i]);
}
}