Leetcode 47. Permutations II | | Leetcode 47. Permutations II 文章作者:Tyan博客:noahsnail.com | CSDN | 简书 1. Description 2. Solution Version 1 12345678910111213141516171819202122232425262728293031323334class Solution {public: vector<vector<int>> permuteUnique(vector<int>& nums) { vector<vector<int>> result; build(result, nums, 0); return result; } private: void build(vector<vector<int>>& result, vector<int>& nums, int start) { if(start == nums.size()) { result.push_back(nums); return; } unordered_map<int, int> duplicate; for(int i = start; i < nums.size(); i++) { if(duplicate.count(nums[i]) > 0) { continue; } else { duplicate[nums[i]]++; } swap(nums[start], nums[i]); build(result, nums, start + 1); swap(nums[start], nums[i]); } } void swap(int& a, int& b) { int temp = a; a = b; b = temp; }}; Version 2 123456789101112131415161718192021222324252627282930313233class Solution {public: vector<vector<int>> permuteUnique(vector<int>& nums) { vector<vector<int>> result; build(result, nums, 0); return result; } private: void build(vector<vector<int>>& result, vector<int>& nums, int start) { if(start == nums.size()) { result.push_back(nums); return; } unordered_set<int> duplicate; for(int i = start; i < nums.size(); i++) { int size = duplicate.size(); duplicate.insert(nums[i]); if(size == duplicate.size()) { continue; } swap(nums[start], nums[i]); build(result, nums, start + 1); swap(nums[start], nums[i]); } } void swap(int& a, int& b) { int temp = a; a = b; b = temp; }}; Reference https://leetcode.com/problems/permutations-ii/description/ 如果有收获,可以请我喝杯咖啡! 赏 微信打赏 支付宝打赏