aboutsummaryrefslogtreecommitdiff
path: root/permutations2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'permutations2.cpp')
-rw-r--r--permutations2.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/permutations2.cpp b/permutations2.cpp
new file mode 100644
index 0000000..16d0162
--- /dev/null
+++ b/permutations2.cpp
@@ -0,0 +1,29 @@
+#include "leetcode.h"
+
+class Solution {
+public:
+ vector<vector<int>> permuteUnique(vector<int> &nums) {
+ vector<vector<int>> ans;
+ helper(0, nums, ans);
+ return ans;
+ }
+
+private:
+ void helper(int i, vector<int> &nums, vector<vector<int>> &ans) {
+ if (i == nums.size()) {
+ ans.emplace_back(nums);
+ return;
+ }
+ unordered_set<int> us;
+ for (int j = i; j < nums.size(); j++) {
+ if (us.count(nums[j]) == 1)
+ continue;
+ us.insert(nums[j]);
+ swap(nums[i], nums[j]);
+ helper(i + 1, nums, ans);
+ swap(nums[i], nums[j]);
+ }
+ }
+};
+
+int main() {}