首页 > 其他 > 详细

Permutations - LeetCode

时间:2019-02-15 15:13:11      阅读:268      评论:0      收藏:0      [点我收藏+]

题目链接

Permutations - LeetCode

注意点

  • n个数字共有n!个全排列

解法

解法一:每一个排列用Next Permutation - LeetCode中的函数生成,一共有n!个。时间复杂度O(n)。

class Solution {
public:
    void nextPermutation(vector<int>& nums) {
        int n = nums.size(),i = n-2,j = n-1;
        while(i >= 0 && nums[i] >= nums[i+1]) i--;
        if(i >= 0)
        {
            while(nums[j] <= nums[i]) j--;
            swap(nums[i],nums[j]);
        }
        reverse(nums.begin()+i+1,nums.end());
    }
    vector<vector<int>> permute(vector<int>& nums) {
        vector<vector<int>> ret;
        int n = nums.size(),temp = 1,i;
        for(i = 1;i <= n;i++)
        {
            temp *= i;
        }
        while(temp >= 1)
        {
            ret.push_back(nums);
            nextPermutation(nums);
            temp--;
        }
        return ret;
    }
};

技术分享图片

小结

  • 排列题,有许多变种

Permutations - LeetCode

原文:https://www.cnblogs.com/multhree/p/10383748.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!