力扣31-下一个排列
📅 2026/7/18 3:09:50
👁️ 次浏览
链接31. 下一个排列 - 力扣LeetCode整数数组的一个排列就是将其所有成员以序列或线性顺序排列。例如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]提示1 nums.length 1000 nums[i] 100类似于计算下一个整数比如123这三位数随机排列最靠近123且比123大的整数就是132了115同理比115大的整数就是151为什么我们能脱口而出结果回溯一下我们的思考过程也许就能找到解决这题的办法以 1 2 5 4 3 为例它的下一个排列是 1 3 2 4 5首先我们为什么知道要动2因为字典序要增大2的右边有比它更大的数。其次为什么是2和3交换因为要按字典序排列3是那个比2大的数中最小的。换完之后是 1 3 5 4 2注意到5 4 2的字典序并不是最小的还要再调整为 2 4 5所以第一步我们需要做的是找到从右往左数第一个”可能增大“的数 x即 x 的右侧有比它更大的数。在刚刚的例子中x 为2显然 x 右侧的序列是单调递减的否则从右往左数第一个”可能增大“的数就必然在 x 的右侧。所以第一步相当于从右往左找 第一个 小于它右侧相邻数 的数 x第二步解决和谁交换的问题。由于下一个排列指的是按照字典序进行排列所以要交换的元素应当是 x 右侧比 x 大的数中最小的那个。由于已知 x 右侧序列是一个递减序列因此可以再次从右往左遍历找到第一个比 x 大的数 y就是要和 x 交换的数第三步交换第四步交换后y 右侧的序列必然是递减的。因为x的右边都比它自己大而y是比它大的数中最小的那个也就是说实际上y和x之间的所有数都比它俩大因此交换之后y右边唯一比它更小的只有x而在交换前右侧序列就已经递减把最小的那个换成更小的依然递减。而我们应当调整为递增才能使得字典序是变大的当中最小的那个所以把右侧序列反转即可常规情况下的四步已经考虑清楚了接下来考虑特殊情况如果当前序列已经是字典序最大的那么按照规则下一个排列就应当是字典序最小的那个怎么处理实际上如果字典序最大意味着这个序列必然单调递减而字典序最小的序列必然单调递增所以只需要将序列反转即可Javaclass Solution { public void nextPermutation(int[] nums) { int n nums.length; // 1.从右往左找第一个小于右侧相邻数的数 int i n - 2; while(i 0 nums[i] nums[i 1]) { i--; } // 如果找到了走第二步否则直接反转整个序列 if(i 0) { // 2.从右往左找第一个比 nums[i] 大的数 int j n - 1; while(nums[j] nums[i]) { j--; } // 由分析可知j 是必然可以找到的交换 int tmp nums[i]; nums[i] nums[j]; nums[j] tmp; } // 3.反转[i 1, n - 1]如果跳过了第二步此时 i 1 0, 合理 int left i 1; int right n - 1; while(left right) { int tmp nums[left]; nums[left] nums[right]; nums[right] tmp; left; right--; } } }
1. 为什么PCB上需要测试点?在PCB设计和制造过程中,测试点(Test Point)是一个看似简单但至关重要的设计元素。作为一名有十年经验的硬件工程师,我见过太多因为忽视测试点设计而导致项目延期或质量问题的案例。测试点本质…
📅 2026/7/18 3:09:50
1. 本地部署大语言模型的核心价值与挑战在AI技术快速发展的今天,大语言模型(LLM)已成为改变人机交互方式的关键技术。与云端服务相比,本地部署LLM具有三大不可替代的优势:数据隐私性、定制化能力和离线可用性。想象一下,你可以在不…
📅 2026/7/18 3:09:50
由于本周电脑还是未修好,无法配置模型。所以这两天主要简单思考了一下关于后端的改进方向,也包括对前期一些模型选择的总结。1. 首先就是关于王筝学姐使用的laur模型。是通过正则化来防止遗忘。可以尝试添加数据回放。差不多就是学新知识时,既…
📅 2026/7/18 3:09:50
摘要:本文从零开始,系统讲解数据在计算机内存中的存储原理。首先介绍内存的基本概念,类比储物柜和邮箱,理解地址与字节。接着阐述位(bit)与字节(byte)的关系,以及不同数据类型(字符型、整型、浮点型)在内存中占用的空间。然后深入数据的二进制表示,包括整数和字符的…
📅 2026/7/18 4:06:11
1. 项目概述:ACM多媒体顶会上的字节跳动水印技术突破最近在翻看ACM Multimedia 2023的录用论文列表时,发现字节跳动团队的一篇关于数字水印技术的论文赫然在列。作为多媒体领域公认的三大顶会之一(另外两个是ICME和MM),…
📅 2026/7/18 4:06:11
1. Apple Watch AGPS技术解析:从原理到实践作为一名穿戴设备开发者,我花了三个月时间逆向分析Apple Watch的AGPS实现机制。这个看似简单的定位功能背后,藏着苹果精妙的软硬件协同设计。与普通GPS不同,AGPS(Assisted-GP…
📅 2026/7/18 4:06:11
目录[TOC](目录)1 ~> 网络通信的本质2~> 理解源IP地址和目的IP地址3~> 认识端口号Port3.1 端口号的范围划分3.2 理解socket3.3 端口号和进程PID4 ~> 网络字节序4.1 为什么要规定网络字节序?4.2 网络字节序转化5 ~> Socket编程接口5.1 相关API介绍5.2…
📅 2026/7/18 4:06:11
OpenAI 正在布局硬件领域,首款产品是一款无屏幕、可移动的智能音箱,定位为具备类人特质的 AI 伴侣。这款设备并非传统意义上的语音助手,而是 ChatGPT 的物理化身,旨在成为家庭环境中的新型智能终端。从目前曝光的信息来看…
📅 2026/7/18 4:06:11
1. 项目概述:这不是一次升级,而是一次“拆解手术” “SaaS开发栈正在被AI工具一层层剥开”——这句话我第一次在旧金山一家做低代码平台的客户会议室里听到时,手里的咖啡差点洒出来。当时他们正用一个刚上线的AI辅助API生成器,把…
📅 2026/7/18 4:05:11
更多请点击:
https://kaifayun.com
第一章:从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则 在Claude驱动的产品需求文档(PRD)生成实践中,原始业务意图往往以自然语言片…
📅 2026/7/18 0:00:33
更多请点击:
https://codechina.net
第一章:Cursor配置生成失效?3大隐藏陷阱4行修复代码,资深工程师连夜整理的紧急补救清单 Cursor 配置生成突然失效,是近期高频报障场景。表面看是 cursor.config.json 未更新或 LSP…
📅 2026/7/18 0:00:33
作者:钟声编辑:Mark出品:红色星际头图:智能驾驶图片据悉,国内某头部智驾公司端到端模型技术大牛Z投身创业,并且已经拿到融资。Z不仅是该头部公司内部最年轻的对标阿里P10级别技术负责⼈,更是业内…
📅 2026/7/18 0:00:33
豆包openclaw最近圈子里都在聊豆包openclaw,我也没忍住,掏腰包入手了一套。说实话,刚拿到手的时候,心里是打鼓的。毕竟市面上类似的智能硬件太多了,有的吹得天花乱坠,用起来却是一堆bug。为了不让大家的钱打水漂,我连续用了半个月。从开箱到日常高频使用,甚至故意测试它…
📅 2026/7/17 2:37:27
SQLyog 13.3.1 社区版在Windows 10/11上的完整安装与连接指南 对于刚接触MySQL数据库管理的开发者和学生来说,选择一个直观易用的图形化管理工具至关重要。SQLyog作为一款轻量级但功能强大的MySQL GUI工具,能够显著提升数据库操作的效率和体验。本文将详…
📅 2026/7/18 0:00:49
SPEC CPU 2006 跨平台基准测试深度实战:ARM/X86/MIPS 架构配置优化与结果分析方法论在当今多元化的计算架构时代,如何客观评估不同处理器平台的真实性能成为系统工程师和性能优化专家的核心挑战。SPEC CPU 2006 作为业界公认的计算密集型基准测试套件&am…
📅 2026/7/17 15:13:18
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/17 6:11:34
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/17 15:13:18
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/17 2:40:57