Next Permutation

原创 2015年07月10日 09:22:35

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

If such arrangement is not possible, it must rearrange it as the lowest possible order (ie, sorted in ascending order).

The replacement must be in-place, do not allocate extra memory.

Here are some examples. Inputs are in the left-hand column and its corresponding outputs are in the right-hand column.
1,2,3 → 1,3,2
3,2,1 → 1,2,3
1,1,5 → 1,5,1
1.先从右到左找到左面比右面小的第一个数字,记下标为i
2.从右到左面找到比i大,但是最小的数,记小标为j
3,交换i.j数
4.对i右面的数进行反转。

class Solution {
public:
    void nextPermutation(vector<int>& nums) {
        int n=nums.size();
        int i,j;
        if(n<=1)
        return ;
        for(i=n-2;i>=0;--i)
        {
            if(nums[i]<nums[i+1])
            break;
        }
        if(i=-1)//这个地方出错,应该是i==-1
        {
            reverse(nums.begin(),nums.end());
            return;
        }
        for(j=n-1;j>i;--j)
        {
            if(nums[i]<nums[j]){
               break; 
            }

        }
        swap(nums[i],nums[j]);
        reverse(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...

排列组合的求法&next_permutation

即数学上的排列组合,这里提供了两种方式。 第一种是用STL头文件algorithm中的next_permutation或prev_permutation函数。但是这样只能求全排列,不能求组合。这种方法...

HDOJ 1716 排列2 next_permutation函数

Problem Description Ray又对数字的列产生了兴趣: 现有四张卡片,用这四张卡片能排列出很多不同的4位数,要求按从小到大的顺序输出这些4位数。Input 每组数据占一行,代表四...

《leetCode》:Next Permutation

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

求字典序的下一个排列(对应lc的Next Permutation)

如果字典序的下一个排列不存在,则返回升序排序。 过程如下: (1) 求满足关系式pj-1        I=max{ j | pj-1 (2) 求满足关系式pj-1 (3) 交换pj-1和ph的值 (...

next_permutation的原理和使用

Source:http://leonard1853.iteye.com/blog/1450085 1、碰到next_permutation(permutation:序列的意思) 今天在...
  • Tidal18
  • Tidal18
  • 2015年01月16日 11:38
  • 262

LeetCode Next Permutation

Description: Implement next permutation, which rearranges numbers into the lexicographically ne...

[C++]next_permutation()函数解析

C++/STL中定义的next_permutation和prev_permutation函数则是非常灵活且高效的一种全排列方法,需要有头文件, 它被广泛的应用于为指定序列生成不同的排列。按照STL文档...

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...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Next Permutation
举报原因:
原因补充:

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