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

【leetcode100】下一个排列

1、题目描述

整数数组的一个 排列  就是将其所有成员以序列或线性顺序排列。

  • 例如,arr = [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3][1,3,2][3,1,2][2,3,1] 。

整数数组的 下一个排列 是指其整数的下一个字典序更大的排列。更正式地,如果数组的所有排列根据其字典顺序从小到大排列在一个容器中,那么数组的 下一个排列 就是在这个有序容器中排在它后面的那个排列。如果不存在下一个更大的排列,那么这个数组必须重排为字典序最小的排列(即,其元素按升序排列)。

  • 例如,arr = [1,2,3] 的下一个排列是 [1,3,2] 。
  • 类似地,arr = [2,3,1] 的下一个排列是 [3,1,2] 。
  • 而 arr = [3,2,1] 的下一个排列是 [1,2,3] ,因为 [3,2,1] 不存在一个字典序更大的排列。

给你一个整数数组 nums ,找出 nums 的下一个排列。

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

示例 1:

输入:nums = [1,2,3]
输出:[1,3,2]

示例 2:

输入:nums = [3,2,1]
输出:[1,2,3]

示例 3:

输入:nums = [1,1,5]
输出:[1,5,1]

2、初始思路

2.1 思路

2.2 代码

class Solution:def nextPermutation(self, nums: List[int]) -> None:"""Do not return anything, modify nums in-place instead."""n = len(nums)i = n-2while i >= 0 and nums[i] >= nums[i+1]:i -= 1if i >= 0:j = n-1while nums[j] <= nums[i]:j -= 1nums[i], nums[j] = nums[j], nums[i]nums[i+1:] = reversed(nums[i+1:])return nums

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

相关文章:

  • 题解:P13017 [GESP202506 七级] 线图
  • RAC-CELL(小区)处理
  • 射频前端的革新力量:ATR2057超低噪声放大器深度解析
  • C#基础篇(10)集合类之列表
  • AMIS全栈低代码开发
  • Claude Code 开发使用技巧
  • 一天一道Sql题(day05)
  • 双立柱式带锯床cad【1张总图】+设计说明书+绛重
  • MS32C001-C单片机,32位ARM M0+内核,宽电压、低功耗、小封装。
  • Python PyDub详解:音频处理从未如此简单
  • 高效集成-C#全能打印报表设计器诞生记
  • Paimon 原子提交实现
  • 无人机雷达模块运行与技术解析
  • 【RK3568+PG2L50H开发板实验例程】FPGA部分 | ROM、RAM、FIFO 的使用
  • UI前端与数字孪生结合实践探索:智慧物流的仓储优化与管理系统
  • 缓存三大问题详解与工业级解决方案
  • 分类预测 | Matlab基于KPCA-ISSA-SVM和ISSA-SVM和SSA-SVM和SVM多模型分类预测对比
  • 【算法训练营Day10】栈与队列part2
  • 微算法科技从量子比特到多级系统,Qudits技术革新引领量子计算新时代
  • 三码合一:OneCode注解驱动的新时代编码范式
  • C++学习笔记三
  • 类模板的语法
  • Python标准库:时间与随机数全解析
  • 【面试精讲】I2C 子系统核心结构与常见问题深度解析
  • MySQL 09 普通索引和唯一索引
  • 汽车功能安全-软件单元验证 (Software Unit Verification)【用例导出方法、输出物】8
  • 装配式建筑4.0:当房子像汽车一样被“智造”
  • 解锁DevOps潜力:如何选择合适的CI/CD工作流工具
  • 北京-4年功能测试2年空窗-报培训班学测开-第四十六天
  • Spring AI Alibaba Graph使用案例多节点并行执行