46. 全排列
题目描述提示帮助提交记录社区讨论阅读解答
给定一个没有重复数字的序列,返回其所有可能的全排列。
示例:
输入: [1,2,3]
输出:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
1
class Solution {
2
public:
3
vector<vector<int>> permute(vector<int>& nums) {
4
vector<vector<int> > ans;
5
vector<int> tmp;
6
vector<bool> v(nums.size(), false);
7
helper(nums, 0, tmp, ans, v);
8
return ans;
9
}
10
private:
11
/* nums : 原始数组
12
count : 已经使用元素的个数
13
tmp : 临时的存储容器
14
ans : 最终的返回结果
15
v : 记录元素是否被访问过的数组
16
*/
17 // 这里都必须是引用,不然的话 会出现结果为空
void helper(vector<int> &nums, int count, vector<int> &tmp, vector<vector<int> > &ans,vector<bool> &v) {
18
if (count == nums.size()) {
19
ans.push_back(tmp);
20
return;
21
}
22
for (int i = 0; i < nums.size(); i++) {
23
if (v[i] == false) {
24
tmp.push_back(nums[i]);
25
v[i] = true;
26
helper(nums,count+1, tmp, ans, v);
27
tmp.pop_back();
28
v[i] = false;
29
}
30
}
31
}
32
33
};
leetcode46 全排列
最新推荐文章于 2022-12-16 11:15:00 发布