zoukankan      html  css  js  c++  java
  • lintcode-15-全排列

    全排列

    给定一个数字列表,返回其所有可能的排列。

    注意事项

    你可以假设没有重复数字。

    样例

    给出一个列表[1,2,3],其全排列为:
    [
    [1,2,3],
    [1,3,2],
    [2,1,3],
    [2,3,1],
    [3,1,2],
    [3,2,1]
    ]

    挑战

    使用递归和非递归分别解决。

    标签

    领英 递归

    code

    class Solution {
    public:
        /**
         * @param nums: A list of integers.
         * @return: A list of permutations.
         */
        vector<vector<int> > permute(vector<int> nums) {
            // write your code here
            vector<vector<int> > result;
            int size = nums.size();
            if(size == 0) {
                result.push_back(nums);  
                return result; 
            }
    
            permute(nums, 0, size, result);
    
            return result;
        }
    
        void permute(vector<int> &nums, int begin, int end, vector<vector<int> > &result) {
            if(begin == end)
                result.push_back(nums);
            else {
                for(int i=begin; i<end; i++) {
                    int temp = nums[i];
                    nums[i] = nums[begin];
                    nums[begin] = temp;
    
                    permute(nums, begin+1, end, result);
    
                    temp = nums[i];
                    nums[i] = nums[begin];
                    nums[begin] = temp;
                }
            }
        }
    };
    
  • 相关阅读:
    linux中的umask命令
    The meaning of the number displayed on the man page in Linux
    Runlevel in Linux
    C语言指针与指向指针的指针
    JS函数、变量作用域
    JS对象、数据类型区别、函数
    JavaScript基础
    DOM
    HTML色码表
    GIT
  • 原文地址:https://www.cnblogs.com/libaoquan/p/6985929.html
Copyright © 2011-2022 走看看