当前位置: 首页 > news >正文

力扣-31.下一个排列

题目链接

31.下一个排列

class Solution {public void nextPermutation(int[] nums) {//1.从右往左找第一个非逆序的数aint left = nums.length - 2;	//这里是为了找不到顺序对的时候正好停在-1while (left >= 0 && nums[left] >= nums[left + 1]) {	//一定要取等号,因为相等要继续寻找left--;}//2.从右往左找到第一个大于a的数bif (left >= 0) {int right = nums.length - 1;while (right > left && nums[right] <= nums[left]) {	//取等号right--;}//3.交换a,bswap(nums, left, right);}//4.将a后面的数逆序reverse(nums, left + 1);}public void swap(int[] nums, int a, int b) {int temp = nums[a];nums[a] = nums[b];nums[b] = temp;}public void reverse(int[] nums, int begin) {int end = nums.length - 1;while (begin < end) {swap(nums, begin, end);begin++;end--;}}
}

小结:如果在步骤 1 找不到顺序对,说明当前序列已经是一个降序序列,即最大的序列,我们直接跳过步骤 2、3 执行步骤 4,即可得到最小的升序序列。

http://www.lryc.cn/news/582979.html

相关文章:

  • Python打卡:Day47
  • 【排序】插入排序
  • 单调栈通关指南:从力扣 84 到力扣 42
  • eslint扁平化配置
  • IoTDB:专为物联网场景设计的高性能时序数据库
  • 深圳凭物联网软件开发构建智慧‘城市大脑‘
  • c语言学习_函数递归
  • 「Java案例」求n1-n2内的素数
  • 使用Node.js搭建Web应用有哪些注意事项?
  • 在 Vue2 与 Vue3 中,面对 **大数据量交互体验优化** 和 **ECharts 大数据渲染性能优化**
  • 萌新赛第(一)场
  • EfficientVMamba: Atrous Selective Scan for Light Weight Visual Mamba论文精读(逐段解析)
  • 华为泰山服务器重启后出现 XFS 文件系统磁盘“不识别”(无法挂载或访问),但挂载点目录仍在且无数据
  • Nginx完全指南 - 从入门到精通(加强版)
  • 【深度学习入门 鱼书学习笔记(1)感知机】
  • Java常用加密算法详解与实战代码 - 附可直接运行的测试示例
  • Spring Boot 多数据源切换:AbstractRoutingDataSource
  • 语言模型 RLHF 实践指南(一):策略网络、价值网络与 PPO 损失函数
  • MySQL索引面试问题梳理
  • 【Android】组件及布局介绍
  • Flutter基础(前端教程②-卡片列表)
  • 【牛客刷题】小红的v三元组
  • 从单体到微服务:Spring Cloud 开篇与微服务设计
  • 音频主动降噪技术
  • 暑假算法日记第四天
  • Spring AI:检索增强生成(RAG)
  • 工作中的思考
  • Java教程:【程序调试技巧】入门
  • 项目Win系统下可正常获取Header字段,但是到了linux、docker部署后无法获取
  • 数据湖技术之Iceberg-03 Iceberg整合Flink 实时写入与增量读取