题意
求一个不重复的序列的全排列
思路
直接使用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;
}
}
};