题意
求一个不重复的序列的全排列
思路
直接使用
DFS
,使用
hash
标记当前数是否使用过
代码
class Solution {
public:
map<int, int>mp;
vector<vector<int>> permute(
vector<int>& nums) {
vector<vector<int> >ans;
vector<int>temp;
DFS(ans, temp, nums,
0);
return ans;
}
void DFS(
vector<vector<int> >& ans,
vector<int>& temp,
vector<int>& nums,
int id){
if(id == nums.size()){
ans.push_back(temp);
return ;
}
for(
int i =
0 ; i < nums.size(); i++){
if(mp[i])
continue;
mp[i] =
1;
temp.push_back(nums[i]);
DFS(ans, temp, nums, id +
1);
temp.pop_back();
mp[i] =
0;
}
}
};