Leetcode 31. Next Permutation (Medium) (java)
Tag: Array
Difficulty: Medium
/*
31. Next Permutation (Medium)
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
*/
public class Solution {
public void nextPermutation(int[] nums) {
int i = nums.length - 1, j = i;
for (; i > 0; i--) {
if (nums[i] > nums[i - 1]) {
break;
}
}
if(i == 0) {
Arrays.sort(nums);
return;
}
for (; j > i; j--) {
if (nums[j] > nums[i-1]) break;
}
swap(nums, i - 1, j);
Arrays.sort(nums, i, nums.length);
}
private void swap(int[] array, int i, int j) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}

本文介绍了一个中等难度的LeetCode题目Next Permutation的Java实现方案。该题要求找出数组中字典序下一个更大的排列,如果不存在,则将其变为最小的排列。文章详细解释了算法思路,并提供了完整的代码实现。

581

被折叠的 条评论
为什么被折叠?



