题解 | #没有重复项数字的全排列#
没有重复项数字的全排列
https://www.nowcoder.com/practice/4bcf3081067a4d028f95acee3ddcd2b1
class Solution {
public:
vector<vector<int>> res;
vector<int> path;
void backtracking(vector<int>& num, vector<bool>& used){
// 如果path的长度跟num的长度相等,说明找到一个排列
if(num.size() == path.size()){
res.push_back(path);
return;
}
// 遍历num中的元素
for(int i = 0; i < num.size(); ++i){
if(used[i]) continue; // path里已经收录的元素,直接跳过
used[i] = true; // path里没有收录该元素,此时使用该元素,修改used数组对应的值
path.push_back(num[i]); // 将当前元素加入path中
backtracking(num, used); // 递归
path.pop_back(); // 回溯
used[i] = false;
}
}
vector<vector<int> > permute(vector<int> &num) {
vector<bool> used(num.size(), false); // 创建used数组
backtracking(num, used);
return res;
}
};
来自代码随想录~~~
