class Solution {
public:
vector<vector<int>> res;
vector<int> path;
vector<bool> st;
vector<vector<int>> permute(vector<int>& nums) {
st = vector<bool>(nums.size(), false);
path = vector<int>(nums.size());
dfs(nums, 0);
return res;
}
void dfs(vector<int>& nums, int u)
{
if (u == nums.size())
{
res.push_back(path);
return ;
}
for (int i = 0; i < nums.size(); ++ i)
{
if (!st[i])
{
st[i] = true;
path[i] = nums[u];
dfs(nums, u + 1);
st[i] = false;
}
}
}
};