一、题目
二、题解
要找到所有的全排列,上述第一测试用例有3个元素,那么第一个位置可以放三种,第二个位置也可以放三种,同理每一个位置都可能会存在3中情况
这样可以通过dfs去枚举所有存在的可能,枚举每一个位置的可能的值,从第一个位置枚举到最后一个位置,在进行dfs的过程中,当枚举完最后一个位置可能的值的时候,我们就需要将这个值进行输出,并且在枚举当前位置可能的值的时候需要注意恢复现场
class Solution {
public:
vector<vector<int>> res;
vector<int> nums;
vector<int> path;
bool check[10];
int n;
void dfs(int u) {
if (u == n) {
res.push_back(path);
return;
}
for (int i = 0; i < n; i++) {
if (!check[i]) {
path.push_back(nums[i]);
check[i] = true;
dfs(u + 1);
check[i] = false;
path.pop_back();
}
}
}
vector<vector<int>> permute(vector<int>& _nums) {
nums = _nums;
n = nums.size();
dfs(0);
return res;
}
};