46. 全排列
题目链接
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/permutations/
题目描述
![](https://i-blog.csdnimg.cn/blog_migrate/2837acaadc22537112645ca78540ad96.png)
题目分析
有序->for从0
排列问题每次都需要从头搜索,需要一个used数组,标记已经选择对元素,used 存放path用了哪些数字。
递归终止条件:path的大小和nums的大小相同。
class Solution {
private:
vector<vector<int>> res;
vector<int> path;
void backtracking(vector<int>& nums, vector<int> used){
if(nums.size() == path.size()){
res.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);
path.pop_back();
used[i] = false;
}
}
public:
vector<vector<int>> permute(vector<int>& nums) {
res.clear();
path.clear();
vector<int> used(nums.size(), false);
backtracking(nums, used);
return res;
}
};