leetcode--Permutations

来源:互联网 发布:给矩阵怎么计算行列式 编辑:程序博客网 时间:2024/06/07 15:20

1.问题

Given a collection of distinct 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].

2.分析

回溯法求解,保证每个元素不同,搜索时不能用二分搜索,因为每个元素无序。


3.实现

class Solution {public:    vector<vector<int>> permute(vector<int>& nums) {        vector<int> one;        solve(nums,one,0);        return allPermute;    }private:    vector<vector<int>> allPermute;    void solve(vector<int> &nums,vector<int> &one,int k) {        int n = nums.size();        for(int i=0;i<n;++i) {            one.push_back(nums[i]);            if(!isExist(one,nums[i])) {                if(k==n-1)                    allPermute.push_back(one);                else                    solve(nums,one,k+1);            }            one.pop_back();        }    }        bool isExist(vector<int> &one,int x) {        for(int i=0;i<one.size()-1;++i) {            if(one[i]==x)                 return true;        }        return false;    }};


0 0
原创粉丝点击