题目地址:
https://leetcode-cn.com/probl...

题目描述:
实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。

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

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

以下是一些例子,输入位于左侧列,其相应输出位于右侧列。
1,2,3 → 1,3,2
3,2,1 → 1,2,3
1,1,5 → 1,5,1

解答:
直接给出步骤:
1从右到左扫描数组找出第一个升序对(nums[j-1],nums[j])
2从右到左扫描数组找出第一个大于nums[j-1]的数nums[k]
3交换nums[j-1],nums[k]
4对num[j...nums.length-1]转置。

java ac代码:

class Solution {public void nextPermutation(int[] nums) {boolean flag = true;int i = 0;for(;i < nums.length-1;i++)if(nums[i] < nums[i+1]){flag = false;break;}if(flag){int x = 0,y = nums.length-1;while(x < y){swap(nums,x,y);x++;y--;}}else{i = nums.length-1;while(i >= 1)if(nums[i] <= nums[i-1])i--;else break;int j = nums.length-1;for(;j >= 0;j--)if(nums[j] > nums[i-1])break;swap(nums,i-1,j);int x = i,y = nums.length-1;while(x < y){swap(nums,x,y);x++;y--;}}}void swap(int[] nums,int x,int y){int temp = nums[x];nums[x] = nums[y];nums[y] = temp;}
}

力扣(LeetCode)31相关推荐

  1. 力扣(LeetCode)刷题,简单+中等题(第31期)

    目录 第1题:同构字符串 第2题:最后一块石头的重量 第3题:最小路径和 第4题:键盘行 第5题:存在重复元素 II 第6题:两数相加 第7题:三个数的最大乘积 第8题:等价多米诺骨牌对的数量 第9题 ...

  2. 力扣(LeetCode)刷题,简单题(第24期)

    目录 第1题:两个列表的最小索引总和 第2题:反转字符串中的元音字母 第3题:整数反转 第4题:将有序数组转换为二叉搜索树 第5题:第N个泰波那契数 第6题:数组序号转换 第7题:质数排序 第8题:日 ...

  3. 力扣(LeetCode)刷题,简单题(第15期)

    目录 第1题:将整数转换为两个无零整数的和 第2题:一周中的第几天 第3题:把二叉搜索树转换为累加树 第4题:连续字符 第5题:拿硬币 第6题:删除中间节点 第7题:猜数字 第8题:整数的各位积和之差 ...

  4. Leetcode-How-What 力扣Leetcode刷题指南

    Leetcode-How-What 力扣Leetcode刷题指南 About the way how to use Leetcode wisely for preparing the intervie ...

  5. 力扣(LeetCode)刷题,简单+中等题(第35期)

    力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升. 第1题:解码异或后的排列 试题要求如下: 回答(C语言): /*** Note: ...

  6. 力扣(LeetCode)刷题,简单+中等题(第34期)

    目录 第1题:整数转罗马数字 第2题:电话号码的字母组合 第3题:二叉树的所有路径 第4题:砖墙 第5题:下一个排列 第6题:括号生成 第7题:删除并获得点数 第8题:全排列 第9题:颜色分类 第10 ...

  7. 力扣(LeetCode)刷题,简单+中等题(第33期)

    目录 第1题:Z 字形变换 第2题:删除字符串中的所有相邻重复项 第3题:基本计算器 II 第4题:螺旋矩阵 第5题:螺旋矩阵 II 第6题:盛最多水的容器 第7题:删除有序数组中的重复项 II 第8 ...

  8. 力扣(LeetCode)刷题,简单+中等题(第32期)

    目录 第1题:数组的度 第2题:托普利茨矩阵 第3题:爱生气的书店老板 第4题:翻转图像 第5题:有效的数独 第6题:无重复字符的最长子串 第7题:区域和检索 - 数组不可变 第8题:二维区域和检索 ...

  9. 力扣(LeetCode)刷题,简单+中等题(第30期)

    目录 第1题:单词规律 第2题:找不同 第3题:在排序数组中查找元素的第一个和最后一个位置 第4题:使用最小花费爬楼梯 第5题:寻找峰值 第6题:字符串中的第一个唯一字符 第7题:两个数组的交集 II ...

最新文章

  1. request.getRemoteAddr()和request.getRemoteHost()
  2. strings 命令——ELF文件格式与“链接和装载”
  3. 企业客户都满意的ToB产品运营秘诀
  4. LeetCode:Largest Number - 求整型数组中各元素可拼合成的最大数字
  5. Android 仿微信多张图片选择器,适配android10系统,open failed: EACCES (Permission denied)
  6. 企业是否应该实现对客户需求的快速响应_互联网企业的数据化迭代和数据化应用...
  7. Django Web开发【2】Django入门
  8. springboot 腾讯云短信平台SDK
  9. 内存颗粒和闪存颗粒的区别_闪存颗粒与内存颗粒的不同
  10. 百度地图批量精度和维度Java,关于百度地图API批量转换成坐标的方法
  11. 大家都在学JAVA,那么学JAVA到底可以做什么?
  12. C#销毁资源,释放内存,GC垃圾回收
  13. 智能社JS学习笔记(二)
  14. 【微电网优化】基于matlab粒子群算法求解热电联供型微电网经济运行优化问题【含Matlab源码 1696期】
  15. java利用循环打印AVA_ava.util.ArrayList在foreach循环遍历时可以删除元素
  16. linux如何删除文件
  17. 实现BMP位图色深转换的方法
  18. Google Apps becomes Chromebook sales channel
  19. Python将图片彩色转化为素描
  20. 上海“共为创新大会”聚焦EGG Network,创领New-DeFi新纪元

热门文章

  1. linux查找日期目录,详解Linux查找目录下的按时间过滤的文件
  2. 在docker中构建普通java程序_Docker入门-构建第一个Java程序
  3. 专治“炼丹侠”各种不服:1分钟就能搞个AI应用 | 最新开源深度学习框架工具套件TinyMS问世...
  4. 苹果成AI“收购狂魔”,5年买下25家公司
  5. CVPR 2020论文开源项目一页看尽,附代码论文
  6. AI独角兽增援抗疫拉锯战,旷视守“城”,依图出“机”
  7. 马斯克直聘AI人才:高中毕没毕业无所谓,但是编程能力得过硬
  8. MRI原理谁都看得懂版
  9. Android 高级自定义View实战
  10. inotify介绍及rsync + inotify 实时同步备份