-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path0046.cpp
More file actions
26 lines (25 loc) · 859 Bytes
/
Copy path0046.cpp
File metadata and controls
26 lines (25 loc) · 859 Bytes
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
class Solution {
private:
void pushPermutations(vector<vector<int>> &permutations, vector<int> &nums, vector<int> ¤t, set<int> &s) {
if (current.size() == nums.size()) {
permutations.push_back(current);
return;
}
for (int i = 0; i < nums.size(); i++) {
if (s.find(nums[i]) == s.end()) {
current.push_back(nums[i]);
s.insert(nums[i]);
pushPermutations(permutations, nums, current, s);
s.erase(nums[i]);
current.pop_back();
}
}
}
public:
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int>> permutations;
vector<int> current; set<int> s;
pushPermutations(permutations, nums, current, s);
return permutations;
}
};