题解 | #有重复项数字的所有排列#
有重复项数字的所有排列
http://www.nowcoder.com/practice/a43a2b986ef34843ac4fdd9159b69863
C++:dfs交换
#include <vector> #include <algorithm> #include <set> using namespace std; class Solution { set<vector<int>> uset; vector<vector<int>> ans; public: void dfs(vector<int>& num, int begin, int n) { if (begin == n-1) { uset.insert(num); return; } for (int i = begin; i < n; i++) { swap(num[i], num[begin]); dfs(num, begin+1, n); swap(num[i], num[begin]); } } vector<vector<int> > permuteUnique(vector<int> &num) { dfs(num, 0, num.size()); for (auto& vec:uset) ans.push_back(vec); return ans; } };