给定一个没有重复数字的序列,返回其所有可能的全排列。
这道题目可以采用回溯法,可以绘制图如下,套用labuladong大神的图;
class Solution {
public:
vector<int> path;
vector<vector<int>> pathRes;
vector<vector<int>> permute(vector<int>& nums) {
int flag[nums.size()]={};
DFS(nums,flag);
return pathRes;
}
void DFS(vector<int>& nums,int flag[]){
if(path.size()==nums.size()){
pathRes.push_back(path);
}
for(int i=0;i<nums.size();i++){
if(!flag[i]){
path.push_back(nums[i]);
flag[i] = 1;
DFS(nums,flag);
flag[i] = 0;
path.pop_back();
}
}
}
};