Permutations II - LeetCode

Posted 真子集

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Permutations II - LeetCode相关的知识,希望对你有一定的参考价值。

题目链接

Permutations II - LeetCode

注意点

  • 不确定有几种排列

解法

解法一:因为有重复的数字所以排列的个数不确定几个,一直生成新的排列直到和原始的数列相同为止

class Solution {
public:
    vector<int> 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());
        return nums;
    }
    vector<vector<int>> permuteUnique(vector<int>& nums) {
        vector<vector<int>> ret;
        ret.push_back(nums);
        vector<int> temp = nextPermutation(nums);
        while(temp != nums)
        {
            ret.push_back(temp);
            temp = nextPermutation(temp);
        }
        return ret;
    }
};

小结

以上是关于Permutations II - LeetCode的主要内容,如果未能解决你的问题,请参考以下文章

leetcode 46-Permutations and 47-Permutations II

[Leetcode] Permutations II

#Leetcode# 47. Permutations II

LintCode : Permutations II

Lintcode16 Permutations II solution 题解

lintcode-medium-Permutations II