Files
leetcode-master/problems/0046.全排列.md
youngyangyang04 8e3f6e8a08 Update
2020-08-20 10:27:53 +08:00

63 lines
1.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 题目地址
https://leetcode-cn.com/problems/permutations/
## 思路
先写逻辑再确认参数先把for循环写出来在写 结束语句,在写 函数参数。
这道题目树形结构还不太一样
## 解法
```
class Solution {
public:
vector<vector<int>> result;
void backtracking (vector<int>& nums, vector<int>& vec, vector<bool>& used) {
// 此时说明找到了一组
if (vec.size() == nums.size()) {
result.push_back(vec);
return;
}
for (int i = 0; i < nums.size(); i++) {
if (used[i] == false) {
used[i] = true;
vec.push_back(nums[i]);
backtracking(nums, vec, used);
vec.pop_back();
used[i] = false;
}
}
}
vector<vector<int>> permute(vector<int>& nums) {
vector<bool> used(nums.size(), false);
vector<int> vec;
backtracking(nums, vec, used);
return result;
}
};
```
这是一个思路:
class Solution {
public:
vector<vector<int>> res;
vector<vector<int>> permute(vector<int>& nums) {
solve(nums, 0);
return res;
}
void solve(vector<int> &nums, int idx) {
if(idx == nums.size()-1 || nums.size() == 0){
res.push_back(nums);
return;
}
for(int i = idx; i < nums.size(); i++){
swap(nums[idx], nums[i]);
solve(nums, idx+1);
swap(nums[idx], nums[i]);
}
}
};