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)的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 31 Next Permutation(下一个全排列)