p124 数组的下一个排列(leetcode 31)

Posted repinkply

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了p124 数组的下一个排列(leetcode 31)相关的知识,希望对你有一定的参考价值。

一:解题思路

Time:O(n),Space:O(1)

二:完整代码示例 (C++版和Java版)

C++:

class Solution {
public:
    void nextPermutation(vector<int>& nums) 
    {
        if (nums.size() == 0) return;
        int n = nums.size();
        int p = n - 2;
        while (p >= 0 && nums[p] >= nums[p + 1]) p--;

        if (p >= 0)
        {
            int i = n - 1;
            while (i > p && nums[i] <= nums[p]) i--;
            swap(nums[p],nums[i]);
        }

        for (int i = p + 1, j = n - 1; i < j; i++, j--)
            swap(nums[i],nums[j]);
    }
};

Java:

class Solution 
    {
        private void swap(int[] nums,int i,int j)
        {
            int temp=nums[i];
            nums[i]=nums[j];
            nums[j]=temp;
        }
        
        public void nextPermutation(int[] nums) 
        {
               if(nums==null || nums.length<2) return;
               int n=nums.length;
               int p=n-2;
               
               while (p>=0 && nums[p]>=nums[p+1]) p--;
               if(p>=0)
               {
                   int i=n-1;
                   while (i>p && nums[i]<=nums[p]) i--;
                   swap(nums,i,p);
               }
               
               for(int i=p+1,j=n-1;i<j;i++,j--)
               {
                   swap(nums,i,j);
               }
        }
    }

 

以上是关于p124 数组的下一个排列(leetcode 31)的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode31. 下一个排列

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

题目地址(31. 下一个排列)

#yyds干货盘点# LeetCode 热题 HOT 100:下一个排列

[leetcode] 31. 下一个排列

31. 下一个排列