zoukankan      html  css  js  c++  java
  • 【leetcode】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].

    解题思路:

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

    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;
        }
    };
    
  • 相关阅读:
    yum 安装pip
    sed和awk用法
    awk删除最后一个字符
    shell读取文件内容并进行变量赋值
    git 添加、提交、推送
    git 本地代码冲突解决,强制更新
    sys系统模块
    os模块
    time-时间模块
    环境变量的使用
  • 原文地址:https://www.cnblogs.com/MrLJC/p/4178591.html
Copyright © 2011-2022 走看看