LeetCode 46. Permutations
原题链接
简单
作者:
VanHope
,
2023-03-19 16:52:16
,
所有人可见
,
阅读 26
C++ 代码
class Solution {
private:
int n;
vector<vector<int>> res;
vector<int> flag = vector<int> (8, 0);
vector<int> index = vector<int> (8, 0);
public:
void dfs(int step, vector<int>& nums)
{
if(step == n)
{
vector<int> tmp;
for(int i = 0; i < n; i++) tmp.push_back(nums[index[i]]);
res.push_back(tmp);
return;
}
for(int i = 0; i < n; i++)
{
if(!flag[i])
{
flag[i] = 1;
index[step] = i;
dfs(step + 1, nums);
flag[i] = 0;
}
}
}
vector<vector<int>> permute(vector<int>& nums) {
n = nums.size(); // index 1 - n的全排列
dfs(0, nums);
return res;
}
};