【每日一题】【排序sort重载】【工具类】2021年12月23日-31. 下一个排列
2024-09-08 16:34:06
实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列(即,组合出下一个更大的整数)。
如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。
必须 原地 修改,只允许使用额外常数空间。
来源:力扣(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;
}
}
最新文章
- python网络编程【三】(网络服务器)
- Linux的段错误调试方法
- Cocos2dx-lua开发之c++绑定到lua
- 如何将MVC Areas中的某一个页设为起始页
- 剑指Offer09 数值的整数次方
- bzoj 3033 太鼓达人
- mysql具体语句示例
- 从Java熟练到Android入门
- angularjs常用事件
- springMVC DispatcherServlet类关系图
- 小程序蓝牙BLE——自动连接设备(手环)
- nodejs----安装配置
- POJ 1703 Find them, Catch them (并查集)
- Egret里用矢量挖圆形的洞
- @Autowired注入为null问题分析
- svn up时提示跳过某节点
- Hadoop 上使用C 语言编程【转】
- ionic项目打包好Xcode工程,模拟器运行各种沙盒缓存目录
- 《JAVA与模式》之装饰模式
- SAP OData $batch processing