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...
  • runningtortoises
  • runningtortoises
  • 2015年05月14日 14:36
  • 1347

31 Next Permutation

题目链接:https://leetcode.com/problems/next-permutation/题目:Implement next permutation, which rearranges ...
  • ChilseaSai
  • ChilseaSai
  • 2015年09月01日 20:51
  • 910

LeetCode 31 Next Permutation(下一个排列)

翻译实现下一个排列,将排列中的数字重新排列成字典序中的下一个更大的排列。如果这样的重新排列是不可能的,它必须重新排列为可能的最低顺序(即,升序排序)。重排必须在原地,不分配额外的内存。这里有些例子。输...
  • NoMasp
  • NoMasp
  • 2015年11月18日 22:40
  • 7214

31. Next Permutation (python)

Implement next permutation, which rearranges numbers into the lexicographically next greater permuta...
  • qq_28119401
  • qq_28119401
  • 2016年10月30日 16:17
  • 537

31. Next Permutation Leetcode Python

Implement next permutation, which rearranges numbers into the lexicographically next greater permuta...
  • hyperbolechi
  • hyperbolechi
  • 2015年01月22日 06:43
  • 508

[LeetCode]31.Next Permutation

【题目】 Implement next permutation, which rearranges numbers into the lexicographically next great...
  • SunnyYoona
  • SunnyYoona
  • 2015年01月16日 12:03
  • 1313

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

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

Leetcode#31. Next Permutation(java)

1. 题目含义:给定一个int数组,输出其全排列中的下一个序列。例如:输入数组:2431,显然其全排列有:{1234,1243,1324,1342,2134,2143,2314,2341,2413,2...
  • u011089927
  • u011089927
  • 2016年11月05日 11:17
  • 262

(Java)LeetCode-31. Next Permutation

Implement next permutation, which rearranges numbers into the lexicographically next greater permuta...
  • u012848330
  • u012848330
  • 2016年08月01日 23:41
  • 347

next_permutation原理剖析

最近刷leetcode的时候遇见next permutation这道题,感觉挺有意思的一个题目,
  • QQ575787460
  • QQ575787460
  • 2014年11月17日 20:49
  • 12998
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:31. Next Permutation
举报原因:
原因补充:

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