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]
.
class Solution {
public:
std::vector<std::vector<int> > permuteUnique(std::vector<int> &num) {
std::set<std::vector<int>> s;
std::vector<std::vector<int>> res;
std::sort(num.begin(),num.end());
do
{
s.insert(num);
} while (std::next_permutation(num.begin(),num.end()));
for(std::set<std::vector<int>>::iterator it = s.begin(); it != s.end(); it++)
{
res.push_back(*it);
}
return res;
}
};