Skip to content

Commit 5ec6061

Browse files
Create permutations-ii.cpp
1 parent 3ca09c0 commit 5ec6061

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

permutations-ii.cpp

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
class Solution {
2+
3+
private:
4+
void backtrack(vector<vector<int>> &global_result, vector<int> &local_result, vector<int> &nums, vector<bool> &visited) {
5+
6+
if(local_result.size() == nums.size()) {
7+
global_result.push_back(local_result);
8+
}
9+
10+
for(int i=0; i<nums.size(); i++) {
11+
12+
if(visited[i] or (i > 0 and nums[i] == nums[i-1] and visited[i-1])) continue;
13+
14+
local_result.push_back(nums[i]);
15+
visited[i] = true;
16+
17+
backtrack(global_result, local_result, nums, visited);
18+
19+
local_result.pop_back();
20+
visited[i] = false;
21+
22+
}
23+
24+
}
25+
26+
27+
public:
28+
vector<vector<int>> permuteUnique(vector<int>& nums) {
29+
if(nums.size() == 0) return vector<vector<int>>();
30+
vector<vector<int>> gr;
31+
vector<int> lr;
32+
vector<bool> visited(nums.size(), false);
33+
sort(nums.begin(), nums.end());
34+
backtrack(gr, lr, nums, visited);
35+
return gr;
36+
}
37+
};

0 commit comments

Comments
 (0)