题解 | #有重复项数字的所有排列#

有重复项数字的所有排列

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;
    }
};
全部评论

相关推荐

04-12 13:42
江南大学 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务