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; } };
版权声明:本文博客原创文章。博客,未经同意,不得转载。