【每日一题】【排序sort重载】【工具类】2021年12月23日-31. 下一个排列
实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列(即,组合出下一个更大的整数)。
如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。
必须 原地 修改,只允许使用额外常数空间。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/next-permutation
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解答:
//从最后开始,找紧邻降序的第i-1个元素 //从第i到最后的元素排序,找后面小于i-1的第一个元素,与第i-1个元素交换 //考察sort重载 class Solution { public void nextPermutation(int[] nums) { int len = nums.length; for(int i = len - 1; i > 0; i--) { if(nums[i] > nums[i - 1]) { Arrays.sort(nums, i , len); for(int j = i; j < len; j++) { if(nums[j] > nums[i - 1]) { nums[j] ^= nums[i - 1]; nums[i - 1] ^= nums[j]; nums[j] ^= nums[i - 1]; return; } } } } Arrays.sort(nums); return; } }
本文来自博客园,作者:哥们要飞,转载请注明原文链接:https://www.cnblogs.com/liujinhui/p/15725030.html

浙公网安备 33010602011771号