31. Next Permutation

原创 2016年08月29日 20:01:41

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">从最后第二个开始往前遍历,找到第一个并非大于后面数据的数,进行交换,因为最大的数据必定是维持整个数列单调递减</span>

class Solution {
public:
    void nextPermutation(vector<int>& nums) {
        int n=nums.size();
        vector<int>:: iterator it,jt;
        int tmp;
        for(it=nums.end()-2;it>=nums.begin();it--)
        {
            for(jt=nums.end()-1;jt>it&&(*it)>=(*jt);jt--);
            if(jt!=it)
            {
                tmp=(*it);
                (*it)=(*jt);
                (*jt)=tmp;
                sort(it+1,nums.end());
                return;
            }
        }
        reverse(nums.begin(),nums.end());
    }
};

另一种写法

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


相关文章推荐

LeetCode 31 Next Permutation (C,C++,Java,Python)

Problem: Implement next permutation, which rearranges numbers into the lexicographically next g...

Leetcode——31. Next Permutation

题目Implement next permutation, which rearranges numbers into the lexicographically next greater permu...

【leetcode】【31】Next Permutation

一、问题描述 Implement next permutation, which rearranges numbers into the lexicographically next gre...

leetcode31~Next Permutation

Implement next permutation, which rearranges numbers into the lexicographically next greater permuta...

【LeetCode】31. Next Permutation解法

31. Next Permutation Implement next permutation, which rearranges numbers into the lexicographic...

31. Next Permutation | Java最短代码实现

原题链接:31. Next Permutation 【思路】 首先,我们来了解一下——字典序法: C++的STL库里面有nextPermutation()方法,其实现就是字典序法。 下...

leetcode No31. Next Permutation

Question: Implement next permutation, which rearranges numbers into the lexicographically next grea...

LeetCode 31: Next Permutation

Next PermutationImplement next permutation, which rearranges numbers into the lexicographically next...

Leetcode 31 Next Permutation (C++实现)

Leetcode 31 Next Permutation解题。c++实现。

LeetCode (31)Next Permutation

(31)Next Permutation题目:找到比目标数大的,只使用目标数内数字组成的最小的数。如果这种安排是不可能的,它必须重新安排它作为最低可能的顺序(即按升序排序)。更换必须到位,不要分配额外...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:31. Next Permutation
举报原因:
原因补充:

(最多只允许输入30个字)