输出给定数组的所有全排列。
这道题还是比较简单的回溯。根据上一篇216Combination Sum3的经验,这次是要输出给定数组的所有全排列,要用到一个visit数组来标识哪些数现在是可以选的。
class Solution {
public:
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int>> res;
vector<int> visit(nums.size(), 0);
vector<int> r;
backtracking(nums, visit, r, res);
return res;
}
void backtracking(vector<int>& nums, vector<int>& visit, vector<int>& r, vector<vector<int>>& res)
{
if(r.size() == nums.size())
{
res.push_back(r);
return;
}
for(int i = 0; i < nums.size(); ++i)
{
if(visit[i] == 0)
{
r.push_back(nums[i]);
visit[i] = 1;
backtracking(nums, visit, r, res);
r.erase(--r.end());
visit[i] = 0;
}
}
}
};