1.题目要求;
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
2.做题代码:
class Solution {
public:
//存入答案数组
vector<vector<int>> result;
//单层数组
vector<int> array;
void backtricking(vector<int>& nums,vector<bool>& used){
//回溯的终止条件:当单层数组的长度等于原数组时,存入答案数组
if(array.size() == nums.size()){
result.push_back(array);
}
for(int i = 0;i < nums.size();i++){
//如果此元素用过,则跳过,如果没用过,则存入单层数组中,并把bool类型改为true
if(used[i] != true){
array.push_back(nums[i]);
used[i] = true;
backtricking (nums,used);
array.pop_back();
used[i] = false;
}else{
continue;
}
}
}
vector<vector<int>> permute(vector<int>& nums) {
vector<bool> used;//设置bool类型,判断是否有重复元素
used.resize(nums.size(),false);
backtricking(nums,used);
return result;
}
};