-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathpermutations.cpp
36 lines (25 loc) · 1.07 KB
/
permutations.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
class Solution {
private:
void backtrack(vector<vector<int>> &global_result, vector<int> &local_result, vector<int> &nums, vector<bool> &visited) {
if(local_result.size() == nums.size()) {
global_result.push_back(local_result);
}
for(int i=0; i<nums.size(); i++) {
if(visited[i]) continue;
local_result.push_back(nums[i]);
visited[i] = true;
backtrack(global_result, local_result, nums, visited);
local_result.pop_back();
visited[i] = false;
}
}
public:
vector<vector<int>> permute(vector<int>& nums) {
if(nums.size() == 0) return vector<vector<int>>();
vector<vector<int>> gr;
vector<int> lr;
vector<bool> visited(nums.size(), false);
backtrack(gr, lr, nums, visited);
return gr;
}
};