Leetcode46
链接:力扣 。
题目:
给定一个 没有重复数字的序列,返回其所有可能的全排列。
一般把N个不同的数字按照某个顺序摆放的结果称为这n个整数的一个排列,全排列是指这N个整数能形成的所有排列。
示例1:
输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
示例2:
输入:nums = [1]
输出:[[1]]
参考代码:
class Solution {
public:
vector<vector<int>> result;
vector<int> permutation;
bool hash[6] = {false};
void dfs(vector<int>& nums) {
if (permutation.size() == nums.size()) {
result.push_back(permutation);
return;
}
for (int i = 0; i < nums.size(); i++) {
if (hash[i] == false) {
permutation.push_back(nums[i]);
hash[i] = true;
dfs(nums);
permutation.pop_back();
hash[i] = false;
}
}
}
vector<vector<int>> permute(vector<int>& nums) {
dfs(nums);
return result;
}
};