diff options
Diffstat (limited to 'permutations2.cpp')
-rw-r--r-- | permutations2.cpp | 29 |
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() {} |