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(下一个排列)

一、题目叙述: Implement next permutation, which rearranges numbers into...

【C++】【LeetCode】31. Next Permutation && 46. Permutations

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

leetCode 31.Next Permutation (下一个字典序排序) 解题思路和方法

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

LeetCode(31)--Next Permutation

就是将这个数组排列成下一个较大的数,如果已经是最大的了,就排列成最小的数。 我是这么想的,从后往前遍历数组,如果一直是逐渐增大的,则已经是最大的了,如果出现了一个下降的数,那么遍历就到此为止,因为这...

31. Next Permutation

题目:Next Permutation##原题链接:https://leetcode.com/problems/next-permutation/Implement next permutation,...

leetcode 31. Next Permutation

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

LeetCode31. Next Permutation

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

LeetCode 31. Next Permutation(下一个排列)

原题网址:https://leetcode.com/problems/next-permutation/ Implement next permutation, which rearranges ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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