思路
单层递归逻辑中用used数组记录是否用过就可以了
代码
cpp
class Solution {
public:
vector<int> path;
vector< vector<int> > result;
void backtracking(vector<int> nums, vector<bool> used){
if(path.size() == nums.size()){
result.push_back(path);
return;
}
for(int i = 0; i < nums.size(); i++){
if(used[i]) continue;
path.push_back(nums[i]);
used[i] = true;
backtracking(nums, used);
used[i] = false;
path.pop_back();
}
return;
}
vector<vector<int>> permute(vector<int>& nums) {
path.clear();
result.clear();
vector<bool> used(nums.size(), false);
backtracking(nums, used);
return result;
}
};