这题和之前做的剑指offer上的字符串全排列。一样。
分析[1]:如果原始要排列的数组顺序为1、2、3、4,现在只要分别交换1、2,1、3,1、4然后对剩下的3个元素进行递归的排列。
自己的code:100%
class Solution {
public:
vector<vector<int>>res;
void helper(vector<int>& nums, vector<int>& Temp, int start)
{
if (start == (nums.size() - 1))
{
res.push_back(nums);
return;
}
if (start > nums.size() - 1)return;
for (int i = start; i < nums.size(); i++)
{
swap(nums[i], nums[start]);
helper(nums, Temp, start + 1);
swap(nums[i], nums[start]);
}
}
vector<vector<int>> permute(vector<int>& nums) {
vector<int> Temp;
helper(nums, Temp, 0);
return res;
}
};
[1]https://blog.csdn.net/u013309870/article/details/68941284