LeetCode::Permutations II

来源:互联网 发布:网络推广的方法有哪些 编辑:程序博客网 时间:2024/06/10 01:53

https://oj.leetcode.com/problems/permutations-ii/

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:    vector<vector<int>> permuteUnique(vector<int> &num) {        vector<vector<int> > resultVec;        resultVec.push_back(num);        permuteUnique(0, resultVec, num);        return resultVec;    }private:    void permuteUnique(size_t position, vector<vector<int>> &resultVec, vector<int> &num) {        for (size_t i = position; i < num.size(); i++) {            if (haveSamePermutationBefore(num, position, i)) {                if (i != position) {                    swap(num[position], num[i]);                    resultVec.push_back(num);                }                permuteUnique(position + 1, resultVec, num);                if (i != position) {                    swap(num[position], num[i]);                }            }        }    }    bool haveSamePermutationBefore(vector<int> &num, size_t begin, size_t end) {        for (size_t i = begin; i < end; i++) {            if (num[i] == num[end]) {                return false;            }        }        return true;    }};



0 0
原创粉丝点击