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

Leetcode 下一个排列

在这里插入图片描述

首先理解整数的字典序,字典序排列总是优先让“较小的”元素出现在前面。字典序的排列规则类似于字典中的单词排列方式,从左到右逐位比较,较小的数字优先出现。按照正整数元素排列的字典序,如果将每个排列视为一个整数值,那么这些排列确实是以升序排列的。

例如,对于数组 [1, 2, 3, 4],字典序排列如下:

  1. [1, 2, 3, 4] → 1234
  2. [1, 2, 4, 3] → 1243
  3. [1, 3, 2, 4] → 1324
  4. [1, 3, 4, 2] → 1342
  5. [1, 4, 2, 3] → 1423
  6. [1, 4, 3, 2] → 1432
  7. [2, 1, 3, 4] → 2134
  8. [2, 1, 4, 3] → 2143
  9. [2, 3, 1, 4] → 2314
  10. [2, 3, 4, 1] → 2341
  11. [2, 4, 1, 3] → 2413
  12. [2, 4, 3, 1] → 2431
  13. [3, 1, 2, 4] → 3124
  14. [3, 1, 4, 2] → 3142
  15. [3, 2, 1, 4] → 3214
  16. [3, 2, 4, 1] → 3241
  17. [3, 4, 1, 2] → 3412
  18. [3, 4, 2, 1] → 3421
  19. [4, 1, 2, 3] → 4123
  20. [4, 1, 3, 2] → 4132
  21. [4, 2, 1, 3] → 4213
  22. [4, 2, 3, 1] → 4231
  23. [4, 3, 1, 2] → 4312
  24. [4, 3, 2, 1] → 4321

在这里插入图片描述

如果只有一个元素,下一个排列是其本身。

java 实现代码

class Solution {public void nextPermutation(int[] nums) {int n = nums.length;if(n < 2) return; //由于返回类型是void,所以如果只有一个元素,下一个排列是其本身。int i = n - 2; // i 是从右往左第一个两个相邻元素中前面的元素小于后面的元素时,前面这个元素的索引位置while(i >= 0 && nums[i] >= nums[i + 1]) {i--;}if(i >= 0) {//寻找比nums[i]大的最小元素int j = n - 1;//此时i右端所有元素相当于是逆序递减排列,//所以j从最右端开始遍历,第一个比i大的元素就是比nums[i]大的最小元素while(nums[j] <= nums[i]) {j--;}//交换nums[j] 和 nums[i]swap(nums, i, j); // swap交换数组nums下标i和j上的元素}//如果是字典序最大的排序此时, i == -1, i + 1 == 0reverse(nums, i + 1, n - 1); //理解从 i + 1 开始}private void reverse(int[] nums, int start, int end) {while(start < end) {swap(nums, start, end);start++;end--;}}private void swap(int[] nums, int i, int j) { //交换数组下标i和j上的元素int temp;temp = nums[i];nums[i] = nums[j];nums[j] = temp;}
}

相关文章:

Leetcode 下一个排列

首先理解整数的字典序&#xff0c;字典序排列总是优先让“较小的”元素出现在前面。字典序的排列规则类似于字典中的单词排列方式&#xff0c;从左到右逐位比较&#xff0c;较小的数字优先出现。按照正整数元素排列的字典序&#xff0c;如果将每个排列视为一个整数值&#xff0…...

WPF中的布局

布局原则 1、不显式设置元素大小。 2、不使用绝对定位。 元素应该根据容器的内容来进行排列。绝对定位在开发前期会带来一些便捷&#xff0c;但扩展性比较差。一旦显示器尺寸或分辨率发生改变&#xff0c;界面的显示效果可能会达不到预期的效果。 3、布局容器可以嵌套使用 常…...

【Spring】Spring和SpringMVC为什么需要父子容器

Spring和Spring MVC使用父子容器的设计模式&#xff0c;主要是为了实现更好的模块化和隔离&#xff0c;提高系统的灵活性和可维护性。具体来说&#xff0c;Spring应用通常包含两个层次的容器&#xff1a;根容器&#xff08;Root WebApplicationContext&#xff09;和子容器&…...

Origin制图——双轴线图实现

1.在我们平常的画图中&#xff0c;我们会遇到属于差别比较的两个数据&#xff0c;但是画两个图又太占地方了&#xff08;难以实现对数据的比较工作&#xff09;&#xff0c;我们想把它画在一个图上&#xff0c;那么怎么实现呢。首先我们输入导入&#xff0c;可以选择excal文件导…...

【算法系列-哈希表】两个集合的交集问题

【算法系列-哈希表】两个集合的交集问题 文章目录 【算法系列-哈希表】两个集合的交集问题1. 两个集合的交集问题(LeetCode 349)1.1 思路分析&#x1f3af;1.2 代码示例&#x1f330; 2.两个集合的交集问题II(LeetCode 350)2.1 思路分析&#x1f3af;2.2 代码示例&#x1f330;…...

linux 效率化 - zsh + tmux

文章目录 简介涉及的资料/代码仓库让我们开始吧1. Oh my Zsh!2. 终端主题 - powerlevel10k &#xff08;赋能优雅终端界面&#xff09;3. Oh my Tmux!安装完成&#xff0c;再加点料1. tmux2. zsh 结语参考资料 简介 来看一段操作演示&#xff08;全程键盘&#xff0c;没有鼠标…...

Python学习-函数

函数 文章目录 函数定义与调用参数传递内存分析返回值参数定义默认值参数个数可变的参数关键字参数 变量的作用域 匿名函数基本语法示例lambda与排序高阶函数map函数reduce函数filter函数 多关键字排序 定义与调用 函数可以嵌套用 先定义后调用 def calc(a,b):cabreturn cre…...

点评项目-4-隐藏敏感信息、使用 redis 优化登录业务

一、隐藏敏感信息 之前我们对 /user/me 路径&#xff0c;直接返回了登录的所有用户信息&#xff0c;其中的 passward 等敏感信息也会被返回到前端&#xff0c;这是很危险的&#xff0c;故我们需要选择性的返回用户信息&#xff0c;隐藏敏感用户信息 我们可以创建一个 UserDTO…...

Redis异步实现解析

目录 1. Redis 异步方式1.1 同步连接优点缺点示例&#xff1a;访问 Redis&#xff0c;并对 counter 实现自增1000次&#xff0c;统计用时 1.2 异步连接优点缺点1.2.1 Redis 驱动1.2.2 示例第1步&#xff1a;实现 Reactor第2步&#xff1a;实现 Redis 适配器第3步&#xff1a;实…...

matlab 相关

1、xcorr 本质上是两个函数做内积运算 相关算法有两种&#xff1a; 在Matlab上既可以 1.用自带的xcorr函数计算互相关&#xff0c;2.通过在频域上乘以共轭复频谱来计算互相关&#xff1b; 网友验证程序 clc;clear;close all; % s1,s2为样例数据 s1 [-0.00430297851562500;-…...

从组会尴尬到学术突破:Transformer助力跨域推荐解析

最近学习了Transformer模型&#xff0c;突然意识到我常阅读的一篇论文中也使用了Transformer。回想起上次开组会时&#xff0c;老师问我论文中的模型是什么&#xff0c;我当时没有答上来&#xff0c;现在才发现其实用的就是Transformer。这种学习过程让我深感&#xff0c;学得越…...

【Flutter、H5、Web?前端个人总结】分享从业经历经验、自我规范准则,纯干货

前言 hi&#xff0c;正式接触web前端已经经过了两年的时间&#xff0c;从大学的java后端转型到web前端&#xff0c;再到后续转战Flutter&#xff0c;逐渐对前端有了一些心得体会&#xff0c;其实在当下前端的呈现形式一直在变化&#xff0c;无论你是用原生、还是web还是混编的…...

mysql主从配置

一、准备工作 准备两个版本一致的数据库。 确认主库开启二进制日志&#xff0c;并配置server-id。 $ ##将 mysql的配置文件/home/mysql2/mysql/my.cnf 中关于二进制日志的配置 $ cd /home/mysql2/mysql/ $ vi my.cnf 修改如下 server-id 11 #log settings log_error erro…...

sklearn pipeline

示例代码 from sklearn.pipeline import Pipeline from sklearn.feature_extraction.text import CountVectorizer from sklearn.naive_bayes import MultinomialNB import numpy as np import scipy.linalg from sklearn.preprocessing import LabelEncoder, StandardScaler …...

springboot实现服务注册与发现

在Spring Boot应用中实现服务注册与发现通常使用Spring Cloud框架&#xff0c;其中Eureka和Consul是两个常用的服务注册与发现组件。以下是使用Eureka来实现服务注册与发现的基本步骤。 准备工作 添加依赖&#xff1a;在你的Spring Boot项目的pom.xml文件中添加Eureka相关的依…...

美格智能亮相2024中国移动全球合作伙伴大会,共赢AI+时代

2024年10月11日至13日&#xff0c;主题为“智焕新生 共创AI时代”的2024中国移动全球合作伙伴大会&#xff0c;在广州琶洲保利世贸博览馆召开&#xff0c;作为中国移动重要的战略合作伙伴&#xff0c;美格智能亮相4号馆E22展位&#xff0c;与上百家知名企业共同展示最新数智化创…...

【LeetCode】动态规划—309. 买卖股票的最佳时机含冷冻期(附完整Python/C++代码)

动态规划—309. 买卖股票的最佳时机含冷冻期 题目描述前言基本思路1. 问题定义2. 理解问题和递推关系状态定义&#xff1a;状态转移公式&#xff1a;初始条件&#xff1a; 3. 解决方法动态规划方法伪代码&#xff1a; 4. 进一步优化5. 小总结 Python代码Python代码解释总结 C代…...

IDE启动失败

报错&#xff1a;Cannot connect to already running IDE instance. Exception: Process 24,264 is still running 翻译&#xff1a;无法连接到已运行的IDE实例。异常:进程24,264仍在运行 打开任务管理器&#xff0c;找到PID为24264的CPU线程&#xff0c;强行结束即可。 【Ct…...

【Kubernetes】常见面试题汇总(六十)

目录 131. pod 一直处于 pending 状态&#xff1f; 132. helm 安装组件失败&#xff1f; 特别说明&#xff1a; 题目 1-68 属于【Kubernetes】的常规概念题&#xff0c;即 “ 汇总&#xff08;一&#xff09;~&#xff08;二十二&#xff09;” 。 题目 69-113 属于…...

maven dependency中scope的取值类型

在 Maven 中&#xff0c;<scope> 标签用于定义依赖项的范围&#xff0c;以指定依赖在不同阶段的可见性和生命周期。以下是 Maven 中常见的 <scope> 取值类型的详细介绍&#xff1a; 1. **compile**&#xff1a; - 默认的依赖范围&#xff0c;适用于编译、测试和…...

Qwen3.5-9B开源可部署实践:国产昇腾910B适配方案(CANN+PyTorch NPU移植)

Qwen3.5-9B开源可部署实践&#xff1a;国产昇腾910B适配方案&#xff08;CANNPyTorch NPU移植&#xff09; 1. 项目概述 Qwen3.5-9B是一款拥有90亿参数的开源大语言模型&#xff0c;具备强大的逻辑推理、代码生成和多轮对话能力。该模型特别针对国产昇腾910B处理器进行了优化…...

别只看显存!租GPU跑AI模型,这5个隐藏参数才是省钱关键

别只看显存&#xff01;租GPU跑AI模型&#xff0c;这5个隐藏参数才是省钱关键 当你在租赁平台上看到两款价格相近的24GB显存显卡时&#xff0c;是否曾困惑为何实际训练速度相差30%以上&#xff1f;显存容量只是GPU性能的冰山一角&#xff0c;真正影响性价比的往往是那些产品页面…...

公司SEO推广有哪些常见的误区需要避免

公司SEO推广有哪些常见的误区需要避免 在数字化营销的时代&#xff0c;公司SEO推广已经成为提升网站流量和品牌知名度的重要手段。在实际操作中&#xff0c;许多企业在SEO推广过程中常常犯下一些常见的误区&#xff0c;这些误区不仅影响了SEO的效果&#xff0c;还可能导致资源…...

从生活沟通到AI对话:写好提示词,用好AI的魔法钥匙

一个顿悟&#xff1a;从复杂技术到简单提示最近与一位从事软件开发的朋友交流&#xff0c;他提出了一个颇具启发性的构想&#xff1a;将软件的售后客服工作交给AI来处理。起初&#xff0c;他的思路充满了技术复杂性——计划向AI提供核心代码库、训练一个专属的客服模型、进行深…...

LeetCode 热题100——128.最长连续序列

题目&#xff1a;给定一个未排序的整数数组 nums &#xff0c;找出数字连续的最长序列&#xff08;不要求序列元素在原数组中连续&#xff09;的长度。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。示例 1&#xff1a;输入&#xff1a;nums [100,4,200,1,3,2] 输出&…...

老马失前蹄,竟然在数据库外键上翻车了,重温外键级联

一、什么是setuptools&#xff1f; setuptools 是一个用于创建、分发和安装 Python 包的核心库。 它可以帮助你&#xff1a; 定义 Python 包的元数据&#xff08;如名称、版本、作者等&#xff09;。 声明包的依赖项&#xff0c;确保你的包能够正确运行。 构建源代码分发包&…...

嵌入式系统调试实战:工具、技巧与内存管理

1. 嵌入式调试的核心价值与挑战从事嵌入式开发十多年来&#xff0c;我深刻体会到调试环节往往决定着项目的成败。与桌面软件开发不同&#xff0c;嵌入式系统一旦部署后很难进行现场维护&#xff0c;这就要求我们必须在上线前解决所有潜在问题。根据行业统计&#xff0c;嵌入式工…...

DS1881对数型数字电位器I²C驱动详解

1. DS1881 数字电位器驱动深度解析&#xff1a;面向嵌入式系统的IC对数型精密控制方案1.1 器件本质与工程定位DS1881 是 Dallas Semiconductor&#xff08;后被 Maxim Integrated 收购&#xff09;推出的单通道 IC 接口对数型数字电位器&#xff0c;其核心价值不在于“可编程电…...

League-Toolkit:颠覆式英雄联盟客户端增强工具的全攻略

League-Toolkit&#xff1a;颠覆式英雄联盟客户端增强工具的全攻略 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League-Toolkit是一款基于官…...

Kandinsky-5.0-I2V-Lite-5s实战:基于Dify平台构建无代码视频生成应用

Kandinsky-5.0-I2V-Lite-5s实战&#xff1a;基于Dify平台构建无代码视频生成应用 1. 引言&#xff1a;让图片动起来的零门槛方案 最近遇到不少朋友在问&#xff1a;有没有什么简单的方法&#xff0c;能让静态图片变成动态视频&#xff1f;传统方案要么需要专业视频编辑技能&a…...