题解 | #没有重复项数字的全排列#
没有重复项数字的全排列
https://www.nowcoder.com/practice/4bcf3081067a4d028f95acee3ddcd2b1
#include <vector>
class Solution {
public:
void dfs(vector<vector<int>> & ans, vector<int> temp, vector<bool> vis, vector<int> num, int n){
if(n == temp.size()){
ans.push_back(temp);
}
for(int i = 0; i < n; i ++){
if(vis[i]) continue;
//与有重复的全排列的区别就是,防止出现两个相同的元素排出一样的序列
temp.push_back(num[i]);
vis[i] = true;
dfs(ans, temp, vis, num, n);
vis[i] = false;
temp.pop_back();
}
}
vector<vector<int> > permute(vector<int>& num) {
int n = num.size();
vector<vector<int>> ans;
if(n == 0) return ans;
vector<int> temp;
vector<bool> vis(n, false);
dfs(ans, temp, vis, num, n);
return ans;
}
};

查看16道真题和解析