LeetCode-Given a collection of numbers, return all possible permutations.

Given a collection of numbers, return all possible permutations.
For example,
[1,2,3]have the following permutations:
[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2], and[3,2,1].
采用递归, 在num中拿出1个数字放在第一个,然后剩下的数字做一个全排列
代码如下:

class Solution {
public:
    vector<vector<int> > permute(vector<int> &num) {
        int N = num.size();
        vector<vector<int> > ret;
        if(N == 1)
        {
            ret.push_back(num);
            return ret;
        }
        vector<vector<int> > post;        
        vector<int> cur;
        vector<int> tmp;
        for(int i = 0; i < N; i++)
        {
            cur = num;
            cur.erase(cur.begin()+i);
            post = permute(cur);
            for(int j = 0; j < post.size(); j++)
            {
                tmp = post[j];
                tmp.insert(tmp.begin(), num[i]);
                ret.push_back(tmp);
            }
        }
        return ret;
    }
};

猜你喜欢

转载自blog.csdn.net/baidu_37964071/article/details/80961737