Leecode#31 Next Permutation

原创 2015年07月10日 22:46:27

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

Difficulty:Medium

这题比较难懂,简单的说是输出输入排列的下个字典排序。

123 132 213 231 312 321

以上是字典排序,体会一下吧。具体实现不难,可以参考:http://www.shangxueba.com/jingyan/1816116.html。

void nextPermutation(vector<int>& nums) {
        int len = nums.size();
        int i = len-1,j=len-1;
        int temp;
        if(len==1||len==0)
            return;
        if(len==2)
        {
           temp = nums[0];
           nums[0]=nums[1];
           nums[1]=temp;
           return;
        }
        while(i>=1)
        {
            if(nums[i]<=nums[i-1])
                i--;
            else
                break;
        }
        i--;
        if(i==-1)
        {
            sort(nums.begin(),nums.end());
            return;
        }
        while(j>=0)
        {
            if(nums[j]<=nums[i])
                j--;
            else
                break;

        }
        temp = nums[i];
        nums[i] = nums[j];
        nums[j] = temp;
        for(int k =i+1;k<=((len-1-i-1)/2+i+1);k++)
        {
            temp = nums[k];
            nums[k] = nums[len-1-(k-(i+1))];
            nums[len-1-(k-(i+1))] = temp;
        }
        return;
    }


版权声明:本文为博主原创文章,未经博主允许不得转载。

[leetcode 31] Next Permutation

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

leetcode——31——Next Permutation

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

leetcode 31 - next permutation

LeetCode 31 - next permutation

LeetCode 31 Next Permutation (下一个排列)

一,问题描述 1 ,实现”下一个排列“函数,将排列中的数字重新排列成字典序列中的下一个更大的排列。如果这样的重新排列是不可能的,它必须重新排列成可能的最低顺序(即升序排序)   重排必须在原地,...

(Java)LeetCode-31. Next Permutation

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

leetcode题解-31. Next Permutation

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

leetcode(31) Next Permutation

https://leetcode.com/problems/next-permutation/ Implement next permutation, which rearranges numbe...

31. Next Permutation

Implement next permutation, which rearranges numbers into the lexicographically next greater permuta...
  • x_shuck
  • x_shuck
  • 2016年05月21日 21:17
  • 104

LeetCode 31 Next Permutation(下一个排列)

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

leetcode 31:Next Permutation 原理剖析

转自 http://blog.csdn.net/qq575787460/article/details/41215475 最近刷leetcode的时候遇见next permutation这道题,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Leecode#31 Next Permutation
举报原因:
原因补充:

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