Permutations II

mac2022-06-30  25

Description:

Given a collection of numbers that might contain duplicates, return all possible unique permutations.

For example,[1,1,2] have the following unique permutations:[1,1,2], [1,2,1], and [2,1,1].

Solution:

class Solution { public: vector<vector<int>> permuteUnique(vector<int>& nums) { sort(begin(nums), end(nums)); vector<vector<int>> rc; permute(rc, nums, 0); return rc; } private: void permute(vector<vector<int>>& result, vector<int> nums, int k) { auto sz = (int)nums.size(); if (k >= sz-1) { result.push_back(nums); return; } permute(result, nums, k+1); for (int i = k+1; i < sz; ++i) { if (nums[i] != nums[k]) { swap(nums[k], nums[i]); permute(result, nums, k+1); } } } }; class Solution { public: vector<vector<int>> permuteUnique(vector<int>& nums) { sort(begin(nums), end(nums)); vector<vector<int>> rc; do { rc.push_back(nums); } while (next_permutation(begin(nums), end(nums))); return rc; } };

转载于:https://www.cnblogs.com/deofly/p/permutations-ii.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)