难度:中等
题目描述:
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
class Solution {
public:
vector<vector<int>> ans;
vector<int> tmp;
void dfs(vector<int>& nums,int used[]){
int n=nums.size();
if(tmp.size()==n){
ans.push_back(tmp);
return;
}
for(int i=0;i<n;i++){
if(used[i]==0){//第一个没有用过的节点
tmp.push_back(nums[i]);
used[i]=1;
dfs(nums,used);
tmp.pop_back();
used[i]=0;
}
}
}
vector<vector<int>> permute(vector<int>& nums) {
int n=nums.size();
int used[n];
memset(used,0,sizeof(used));
dfs(nums,used);
return ans;
}
};