week_12_ Permutations II

来源:互联网 发布:建筑软件上市公司 编辑:程序博客网 时间:2024/06/03 20:12

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],  [2,1,1]]

Solution

在I的基础上需要对重复的序列进行删除,对代码修改如下:

代码实现如下:

class Solution {public:    void recursion(vector<int> num, int i, int j, vector<vector<int> > &res) {        if (i == j-1) {            res.push_back(num);            return;        }        for (int k = i; k < j; k++) {            if (i != k && num[i] == num[k]) continue;            swap(num[i], num[k]);            recursion(num, i+1, j, res);        }    }    vector<vector<int> > permuteUnique(vector<int> &num) {        sort(num.begin(), num.end());        vector<vector<int> >res;        recursion(num, 0, num.size(), res);        return res;    }};

运行结果如下:


原创粉丝点击