实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列(即,组合出下一个更大的整数)。

如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。

必须 原地 修改,只允许使用额外常数空间。

来源:力扣(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;
}
}

最新文章

  1. python网络编程【三】(网络服务器)
  2. Linux的段错误调试方法
  3. Cocos2dx-lua开发之c++绑定到lua
  4. 如何将MVC Areas中的某一个页设为起始页
  5. 剑指Offer09 数值的整数次方
  6. bzoj 3033 太鼓达人
  7. mysql具体语句示例
  8. 从Java熟练到Android入门
  9. angularjs常用事件
  10. springMVC DispatcherServlet类关系图
  11. 小程序蓝牙BLE——自动连接设备(手环)
  12. nodejs----安装配置
  13. POJ 1703 Find them, Catch them (并查集)
  14. Egret里用矢量挖圆形的洞
  15. @Autowired注入为null问题分析
  16. svn up时提示跳过某节点
  17. Hadoop 上使用C 语言编程【转】
  18. ionic项目打包好Xcode工程,模拟器运行各种沙盒缓存目录
  19. 《JAVA与模式》之装饰模式
  20. SAP OData $batch processing

热门文章

  1. MinIO管理员完整指南
  2. 大华海康NVR录像JAVA下载及WEB播放
  3. NSIS隐藏桌面
  4. .NET 6 跨服务器联表查询
  5. Linux 下模拟制作块设备并挂载
  6. 虚拟化_Xen——敬请期待!
  7. 2、yaml配置文件当中的坑(数字的定义和支持进制书写格式)
  8. golang单元测试一(简单函数测试)
  9. 抛砖系列之redis监控命令
  10. SQL--Case When.. Then.. end的使用