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].

解题思路:

这道题目由于是求所有的全排列,比较直观的方法就是递归了

class Solution:
    # @param num, a list of integer
    # @return a list of lists of integers

    def permute(self,l):  
        if(len(l)<=1):  
            return [l]  
        r=[]
        for i in range(len(l)):  
            s=l[:i]+l[i+1:]  
            p=self.permute(s)  
            for x in p:  
                r.append(l[i:i+1]+x)  
        return r

s = Solution()
print s.permute([1,2,3])

C++版

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

相关文章:

  • 2021-06-12
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-11-23
  • 2021-08-17
  • 2021-06-02
  • 2021-08-30
  • 2021-07-11
  • 2021-10-11
相关资源
相似解决方案