没有重复项数字的全排列_牛客题霸_牛客网 (nowcoder.com)

class Solution {
public:
vector<vector<int> >res;
vector<int> path;
void backtracking(vector<int> &num, vector<bool> &used){
if(path.size() == num.size()){
res.push_back(path);
return ;
}
for(int i = 0; i < num.size(); ++i){
if(used[i] == true) continue;
used[i] = true;
path.push_back(num[i]);
backtracking(num,used);
path.pop_back();
used[i] = false;
}
}
vector<vector<int> > permute(vector<int> &num){
res.clear();
path.clear();
vector<bool> used(num.size(),false);
backtracking(num,used);
return res;
}
};
该文章介绍了一个C++实现的解决方案,通过回溯法生成一个整数数组中不包含重复数字的所有可能全排列。代码中定义了一个Solution类,包含两个主要方法:backtracking用于递归地构建排列,permute用于初始化并调用回溯函数。backtracking函数利用一个布尔数组记录每个数字是否已被使用,避免重复添加到路径中。
279

被折叠的 条评论
为什么被折叠?



