leetcode: Permutations

来源:互联网 发布:adobe acrobat软件下载 编辑:程序博客网 时间:2024/05/21 07:50

方法1:

class Solution {public:    vector<vector<int> > permute(vector<int> &num) {        vector< vector< int> > res;        permutation( res, num, 0);        return res;    }    void permutation( vector< vector< int> > &res, vector< int> &num, int i){        if( i == num.size()){            res.push_back(num);            return;        }        for( int j = i; j < num.size(); ++j){            swap( num[i], num[j]);            permutation( res, num, i+1);            swap( num[j], num[i]);        }    }    void swap( int &a, int &b){        int tmp = a;        a = b;        b = tmp;    }};

方法2:

class Solution {public:    vector<vector<int> > permute(vector<int> &num) {        vector< vector< int> > res;        if( num.size() <= 1){            res.push_back(num);            return res;        }                vector< vector< int> > post;        vector< int> cur = num;        vector< int> tmp;                for( int i = 0; i < num.size(); ++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]);                res.push_back(tmp);            }        }        return res;    }};


0 0