力扣:全排列
题目:
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
解析:
此题为排列题目,要求求出所有可能的排列,若按照递增的顺序排列。
- 每个for循环代表每一层,for循环中的 i 变量代表可选所有值,然后通过used数组来判断此值是否可选,选定之后,则递归进入下一层。同时通过回溯来实现递增。
- 最后判断是否深搜结束
代码:
class Solution {
public:
vector<vector<int>>result;
vector<int>path;
void backtracking(vector<int>& nums,vector<int>used) {
if(path.size() == nums.size()) {
result.push_back(path);
return;
}
for(int i = 0; i < nums.size(); i++) {
if(used[i] == 1) continue;
path.push_back(nums[i]);
used[i] = 1;
backtracking(nums,used);
path.pop_back();
used[i] = 0;
}
}
vector<vector<int>> permute(vector<int>& nums) {
vector<int>used(nums.size(),0);
backtracking(nums,used);
return result;
}
};