当前位置: 首页 > 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;适用于编译、测试和…...

Markdown Viewer:打造终极浏览器Markdown阅读体验的完整解决方案

Markdown Viewer&#xff1a;打造终极浏览器Markdown阅读体验的完整解决方案 【免费下载链接】markdown-viewer Markdown Viewer / Browser Extension 项目地址: https://gitcode.com/gh_mirrors/ma/markdown-viewer Markdown Viewer是一款功能强大的浏览器扩展&#xf…...

中国500万医生的新AI:顶刊独家联手,卷的就是证据源

金磊 发自 杭州量子位 | 公众号 QbitAI很反差。明明是一场AI的发布会&#xff0c;台下却坐满了医学界的大佬们&#xff1a;有北大、清华的&#xff0c;有浙江、上海的&#xff0c;甚至医学顶刊BMJ集团的主编都来围观了……△图片由AI生成为啥会这样&#xff1f;因为阿里健康正式…...

RISC-V RT-Thread Smart用户态应用编译与QEMU运行实战指南

1. 项目概述&#xff1a;从内核到应用的完整RISC-V生态体验最近在折腾RT-Thread Smart&#xff08;简称RTT-Smart&#xff09;这个微内核实时操作系统&#xff0c;目标平台是qemu模拟的64位RISC-V虚拟机&#xff08;qemu-virt64-riscv&#xff09;。整个过程的核心&#xff0c;…...

如何快速制作专业演示文稿?终极免费开源在线PPT工具PPTist完整指南

如何快速制作专业演示文稿&#xff1f;终极免费开源在线PPT工具PPTist完整指南 【免费下载链接】PPTist PowerPoint-ist&#xff08;/pauəpɔintist/&#xff09;, An online presentation application that replicates most of the commonly used features of MS PowerPoint,…...

联想拯救者工具箱:让游戏本性能释放更自由的开源神器

联想拯救者工具箱&#xff1a;让游戏本性能释放更自由的开源神器 【免费下载链接】LenovoLegionToolkit Lightweight Lenovo Vantage and Hotkeys replacement for Lenovo Legion laptops. 项目地址: https://gitcode.com/gh_mirrors/le/LenovoLegionToolkit 联想拯救者…...

ncmdump终极NCM解密转换完全指南

ncmdump终极NCM解密转换完全指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾遇到过这样的困扰&#xff1f;从网易云音乐下载的歌曲只能在特定播放器中播放&#xff0c;想要在其他设备上欣赏却束手无策。这种被格式限制的…...

在Nodejs后端服务中集成多模型API实现智能客服

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在Nodejs后端服务中集成多模型API实现智能客服 构建一个智能客服系统时&#xff0c;开发者常常面临模型选择的两难&#xff1a;既要…...

用户为中心交互系统工程在智能制造系统中应用

用户为中心交互系统工程&#xff08;User-Centered Interaction System Engineering, UCI-SE&#xff09;是智能制造与 AI 时代下&#xff0c;重塑传统工业软件&#xff08;如 MES、ERP、SCADA&#xff09;和硬件控制终端&#xff08;如 HMI、具身智能教导盒&#xff09;的核心…...

解锁AI编程新体验:开源助手完整配置指南

解锁AI编程新体验&#xff1a;开源助手完整配置指南 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your trial request li…...

3步实现微信聊天记录永久备份:WeChatExporter完整解决方案

3步实现微信聊天记录永久备份&#xff1a;WeChatExporter完整解决方案 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否曾因手机丢失或系统更新而永远丢失珍贵的微信…...