Question
Tips
Backtracking
Code
class Solution{
public:
void BT(int depth,vector<int> &nums){
if(depth==nums.size()){
res.push_back(tmp);
return;
}else{
for(int i=0;i<nums.size();++i){
bool flag=true;
for(int j=0;j<tmp.size();++j)
if(tmp[j]==nums[i]){
flag=false;
break;}
if(flag==false)
continue;
tmp.push_back(nums[i]);
BT(depth+1,nums);
tmp.erase(tmp.end()-1,tmp.end());
}
}
}
vector<vector<int> > permute(vector<int>& nums) {
tmp.clear();
res.clear();
for(int i=0;i<nums.size();++i){
tmp.push_back(nums[i]);
BT(1,nums);
tmp.erase(tmp.end()-1,tmp.end());
}
return res;
}
private:
vector<int> tmp;
vector<vector<int> > res;
};