- 博客(640)
- 收藏
- 关注
原创 LeetCode 1658 将 x 减到 0 的最小操作数(前缀和 + 滑动窗口,多解法深度剖析)
摘要(≤150字): 本题核心思想是将“从两端取数使x减为0”转化为“找和为 total - x 的最长连续子数组”。利用正数数组的单调性,采用滑动窗口法可在O(n)时间、O(1)空间内求解。通过维护窗口和,动态调整左右边界,找到最大中间子数组长度,最终答案为 n - max_len。该方法简洁高效,是面试推荐解法。
2026-10-30 15:07:42
121
原创 3970. 最多 K 个连续相同字符的最短路径
本题为带路径约束的最短路问题,核心在于将“连续相同字符长度”纳入状态设计,构建 (节点, 当前连续长度) 的扩展状态空间。通过分层图建模,状态数达 $n \times k$,需在新图上运行 Dijkstra。解法从显式建图到隐式状态扩展优化内存,引入支配剪枝、拓扑序 DP 与双向搜索等进阶技巧,结合真实压测数据验证性能差异。关键洞察:k 因子不可规避,但可通过状态压缩、剪枝与结构特化显著提升效率。最终选型取决于数据规模与约束特性,强调“状态建模即解题本质”的系统思维。
2026-10-30 14:55:36
66
原创 数位和等于下标的最小下标:四种数位求和法 + 数学上界剪枝,从 O(n) 扫描到固定 28 次的完整解剖
本文深入解析 LeetCode 3550 题,通过四种数位和计算法(取模整除、字符串、查表、数学剪枝)揭示核心优化:利用数位和上界 ≤27 的数学性质,将原本 O(n) 的扫描压缩为固定最多 28 次检查。解法一正向扫描首个命中即返回,保证最小下标正确性;解法四通过上界剪枝实现常数级时间复杂度,显著提升效率。结合组合学分析与实测数据,论证了答案稀疏性与剪枝普适性,提供从暴力到数学优化的完整演进路径,体现“看似简单题”背后的深层算法思想。
2026-10-29 16:01:27
8
原创 花括号展开 II:表达式解析 × 集合运算,递归下降 / 显式栈 / 元编程 eval / 分治四解法全解与组合爆炸上限分析
本文深入解析 LeetCode 1096「花括号展开 II」,从 BNF 文法建模出发,提出四种独立解法:递归下降、显式栈迭代、元编程 eval 与分治切分,均基于集合运算实现并集与笛卡尔积拼接。通过文法归约论证正确性,结合组合爆炸上界分析与压测数据,全面对比复杂度与性能,揭示解析与集合运算的协同机制,为文法驱动问题提供系统性解决方案。
2026-10-29 14:54:42
6
原创 替换字符串中的括号内容:扫描状态机 × 字典映射,五种解法从暴力到 O(n) 的完整解剖与性能压测
本文深入剖析 LeetCode 1807 替换括号内容问题的五种解法,从暴力反复扫描到 O(n) 线性状态机,揭示字符串不可变性下的性能陷阱。核心在于“单次扫描 + 哈希映射”,通过列表累积避免重复拷贝,实现真正线性复杂度。对比正则、拼接、逐键替换等写法,结合压测数据与语言底层机制(如 CPython 优化),全面论证主解的高效与稳健,是字符串处理与代码功底的典范实践。
2026-10-29 14:01:14
88
原创 查询树上回文路径:回文重排判定 × 动态点权 × 路径查询,从暴力到 O((n+q)log n) 的奇偶前缀、Euler 序与树链剖分全解
本文系统解析树上回文路径查询问题,核心思想是将“回文重排判定”转化为字符奇偶性统计,利用26位异或掩码高效表示路径信息。通过五种解法层层递进:暴力遍历(理解起点)、静态LCA前缀(无修改)、Euler序+树状数组(动态主解)、树链剖分+线段树(替代思路)、树上莫队(离线带修),揭示从“路径遍历”到“区间异或维护”的本质跃迁。重点论证奇偶性与异或的等价性、掩码设计的合理性,并通过性能压测验证O((n+q)log n)解法的优越性,为树上动态路径查询提供完整方法论。
2026-10-29 13:49:44
65
原创 LeetCode 1190 反转每对括号间的子串:五种解法与“匹配跳转 + 方向翻转“的 O(n) 本质
LeetCode 1190题“反转每对括号间的子串”本质是嵌套反转,核心洞察为:每穿过一对括号,遍历方向翻转一次。解法一(栈模拟)直观但最坏复杂度O(n²);最优解法二通过预处理括号匹配表,结合双向遍历实现O(n)线性时间,仅需一次扫描,每个字符访问常数次。其余解法如分治递归、最内层优先删除等从不同角度逼近最优,但均以“方向翻转”思想为根基。最终结论:预计算匹配 + 双向遍历是理论与工程双优的O(n)解法。
2026-10-28 15:02:16
343
原创 LeetCode 1614 括号的最大嵌套深度:六种解法与“未闭合左括号数“的本质
LeetCode 1614 括号的最大嵌套深度问题,核心本质是扫描过程中未闭合左括号的最大数量。六种解法均基于此:单指针计数器(最优,O(n)/O(1))、显式栈模拟、前缀和数学化、函数式一行流、分治递归(优化后可达 O(n))。其中,计数器与前缀和视角等价,揭示了“最大嵌套深度 = 最大前缀和”的本质。题目保证括号有效,无需校验,数字与运算符可忽略。解法一为工程最优,简洁高效;其余方法拓展思维,适用于变体题如位置深度数组、特定字符深度等。
2026-10-28 14:51:32
124
原创 LeetCode 3882 网格图中最小异或路径:从暴力回溯到状态集DP与逐位贪心的完整推演
LeetCode 3882 要求在网格中找最小异或路径。由于格子值 ≤1023,异或结果仅可能为0~1023共1024种,故可将状态压缩为位集。暴力回溯因路径指数级增长不可行;朴素单值DP错误地忽略多解性。核心解法为状态集DP:用位集维护每点可达异或值,转移时做并集与异或置换。进一步优化可用滚动数组降空间至O(n·2^k),或逐位贪心结合可行性判断。最终通过位集、字典树、BFS等多视角实现高效求解,总复杂度可控。
2026-10-28 14:31:14
78
原创 LeetCode 2267. 检查是否有合法括号字符串路径|网格DP+剪枝,从暴力DFS到优化DP
LeetCode 2267题要求判断网格中是否存在合法括号路径。核心思路:从左上到右下,仅向右向下移动,路径拼接的括号串需合法(平衡值始终≥0且最终为0)。关键剪枝:路径长必为偶数,起点非),终点非(,平衡值不超过(m+n-1)//2。暴力DFS会超时,优化方案为记忆化搜索或三维DP:状态dp[i][j][k]表示到达(i,j)时平衡值为k是否可达。通过滚动数组可进一步优化空间。推荐使用迭代DP实现,时间复杂度O(mnL),空间优化后可高效通过。
2026-10-27 11:14:17
189
原创 LeetCode1111_有效括号的嵌套深度_深度解析
LeetCode 1111题要求将合法括号串拆分为两个子序列,使两者最大嵌套深度最小。核心思想是:最优解下界为⌈depth/2⌉,通过奇偶深度贪心分配(d % 2)可达到该下界。四种解法包括贪心计数、栈配对、位运算优化及层级染色,均基于“同对括号同组”与“深度奇偶交替”的本质。该问题与第20题(合法性判断)、第32题(最长有效子串)构成完整括号问题链,揭示了从验证到构造再到优化的递进逻辑。
2026-10-27 10:59:11
7
原创 LeetCode20_有效的括号_深度解析
本文深度剖析LeetCode 20题“有效的括号”,揭示栈是唯一自然解法的本质原因:括号匹配依赖LIFO顺序与类型匹配,计数法在多类型下必然失效。文章系统对比六种解法,从基础栈、哈希映射优化到字符串消除、正则替换,指出其复杂度与工程适用性差异。重点强调:栈是唯一线性解法,而正则与递归无法处理嵌套结构。文末延伸至错误定位、嵌套深度分析及衍生题(最长有效括号、生成合法序列),构建完整知识体系。
2026-10-27 10:36:52
92
原创 LeetCode 3963 · 构造恰好一条路径的网格
本文提出构造恰好一条单调路径的网格的统一解法,核心为“阶梯定理”:若每行开放格连续、下移列单调不降且路径终点可达,则路径唯一。基于此,给出四类构造(L型、逐行阶梯、均分阶梯、对角线扩展),均满足充分条件。通过DP计数与DFS枚举验证正确性,证明其在任意规模下均有效。结论:所有解法本质同源,属同一参数化家族。
2026-10-27 10:24:14
122
原创 LeetCode 22「括号生成」:回溯、分治、DP、迭代栈四解全解析
本文详解LeetCode 22「括号生成」的四种解法:回溯(DFS+剪枝)、分治(闭包编号)、动态规划(自底向上)与迭代栈模拟。核心思想基于卡塔兰数,通过三条铁律(前缀左括号不少于右括号、总数相等、以(开头)结尾)实现正确性保障。回溯法最直观,分治法体现结构美,DP法避免重复计算,迭代栈则将递归显式化。四者时间复杂度均接近卡塔兰数级,但DP在实测中表现最优。适用于理解递归构造、剪枝逻辑与算法设计模式。
2026-10-26 14:05:41
5
原创 LeetCode 32「最长有效括号」:从暴力到 O(1) 空间的四种解法全解析
本文详解LeetCode 32题「最长有效括号」的四种解法:暴力枚举(O(n²))、栈+哨兵(O(n)空间)、动态规划(O(n)空间)及双趟计数(O(1)空间)。核心思想包括利用栈记录未匹配位置、定义以i结尾的有效子串长度,以及通过两次扫描消除额外空间。解法均通过实例验证,强调边界处理与正确性,最终实现从暴力到常数空间的优化跃迁,是掌握括号匹配与连续子串问题的经典范例。
2026-10-26 13:14:06
5
原创 LeetCode 678「有效的括号字符串」:五种解法从贪心到 DP 的完整拆解
LeetCode 678「有效的括号字符串」考察通配符 '*' 的灵活匹配。核心在于判断是否存在一种赋值方式使字符串合法。解法一(贪心区间计数)用 lo/hi 维护未匹配左括号的可行范围,O(1) 空间最优;解法二(双栈)通过下标匹配实现具体赋值;解法三(双趟扫描)分别检测正反向括号失衡;解法四(区间DP)与解法五(平衡度DP)则从动态规划角度枚举状态,时间复杂度分别为 O(n³) 与 O(n²)。五种方法各具优势,覆盖贪心、栈、双指针与DP思想,是括号匹配类问题的经典模板。
2026-10-26 12:59:56
99
原创 LeetCode 3619「总价值可以被 K 整除的岛屿数目」:从 Flood Fill 到并查集的四种解法全解析
LeetCode 3619题要求统计总价值可被K整除的岛屿数量。核心是连通分量(岛屿)的遍历与价值求和,关键点包括:陆地判定为>0、避免整数溢出(用long或原地取模)、防止递归爆栈。四种解法分别为:DFS递归(直观但易爆栈)、BFS迭代(稳定)、原地标记(省空间)、并查集(离线处理)。推荐使用BFS或原地标记法,兼顾效率与安全性,尤其在大规模数据下表现更优。
2026-10-26 12:13:55
78
原创 LeetCode 856:括号的分数 —— 四种解法从栈到深度计数的底层剖析
摘要(148字): LeetCode 856 括号分数题核心在于理解嵌套递归计分规则。最优解为深度计数法:遍历字符串,维护深度 depth,仅当遇到“()”时累加 2^depth。时间复杂度 O(n),空间 O(1)。其他解法包括栈模拟(维护层分数)、递归分治(拆解 AB 与 (A) 结构)。关键洞察:分数由原子 ()` 的深度决定,与内部结构无关。推荐面试首选深度计数法,简洁高效。
2026-10-25 10:55:40
8
原创 LeetCode 921:使括号有效的最少添加 —— 五种解法从贪心到区间DP的底层剖析
本文深入剖析LeetCode 921题“使括号有效的最少添加”五种解法:贪心计数(最优,O(1)空间)、栈模拟、区间DP、递归记忆化与数学公式法。核心思想为:最少添加数 = 未闭合左括号数 + 多余右括号数。贪心法高效简洁,适用于仅求数量;栈法可还原添加位置;区间DP与递归记忆化适合复杂变体。文章涵盖完整代码、复杂度分析、性能压测及工程避坑建议,适合作为括号匹配专题的进阶学习资料。
2026-10-25 10:39:52
7
原创 LeetCode 1254:统计封闭岛屿的数目 —— 六种解法从边界感染到并查集的底层剖析
本文深入剖析LeetCode 1254题“统计封闭岛屿的数目”的六种解法,涵盖边界感染、单次DFS、BFS、并查集、原地标记及迭代DFS等策略。核心思想是:任何触及矩阵边界的陆地连通块均非封闭岛。解法一(边界感染)最直观高效,通过双阶段洪水填充先淹没所有贴边陆地,再统计剩余连通块;其余解法从不同角度优化空间或避免递归栈溢出。文章结合可运行代码、复杂度分析与正确性证明,辅以多语言实现与性能压测,适用于算法进阶与图论连通性学习。
2026-10-25 10:17:35
113
原创 删除无效的括号:BFS 与 DFS 的殊途同归 —— LeetCode 301 全解法深度剖析
LeetCode 301「删除无效括号」是一道考察“求所有最少删除方案”的困难题。核心在于:先通过一次扫描确定需删 L 个左括号、R 个右括号的硬配额,再枚举所有满足该配额且生成合法串的子序列。本文详解四种解法:BFS(按删除层数逐层搜索)、DFS回溯(带配额剪枝)、DFS游程压缩(优化重复结构)、BFS剪枝(提前终止无效分支),并提供多语言实现与性能对比。关键洞察:求全部最优解比求一个解难一个量级,难点在于高效组织解空间、精细剪枝与去重。实测最优解比朴素BFS快40倍,适用于面试与工程化括号校验场景。
2026-10-24 11:22:01
110
原创 区间交集与日期序数化:LeetCode 2409《统计共同度过的日子数》五解三语言全剖析
本文深入剖析LeetCode 2409《统计共同度过的日子数》,通过暴力枚举、区间交集公式与差分数组三种解法,系统讲解日期序数化、闭区间交集计算等核心思想。结合五种编程语言实现,对比时空复杂度,揭示常数优化的重要性,并延伸至闰年、多人重叠等工程变体,完整呈现从“过题”到“上生产”的算法落地路径。
2026-10-24 10:33:00
8
原创 删除最外层括号_CSDN技术解析
本文深度剖析力扣第1021题“删除最外层括号”,核心洞察为:最外层括号即嵌套层级为0的括号。基于此,提出三种解法——深度计数器($O(n)$时间、$O(1)$空间,最优)、栈模拟与层级预计算,均通过原语分解唯一性与层级判据验证正确性。采用独立真值机穷举验证(196个样本),并压测至 $n=2\times10^6$,确保高效可靠。最终揭示输出仍为有效括号串,拓展至变体与理论边界分析,实现从问题理解到工程落地的完整闭环。
2026-10-23 12:17:05
5
原创 平衡括号字符串_CSDN技术解析
本文深度剖析力扣第1541题“平衡括号字符串的最少插入次数”,核心洞察是将连续"))"视为原子闭括号令牌,构建等价于普通括号嵌套文法 $V \to VV \mid (,V,)) \mid \varepsilon$。基于此,提出三种线性解法:need计数器(含奇偶修正机制)、"))"配对扫描、栈模拟(修正版),均通过区间DP与独立Dijkstra状态机双重验证,确保正确性。全面分析边界陷阱、性能压测及复杂度理论边界,揭示“连续性”隐坑,为同类问题提供严谨范式。
2026-10-23 11:01:01
5
原创 最小差值平方和_CSDN技术解析
本文深度剖析力扣第2333题“最小差值平方和”,通过三重降维揭示问题本质:仅与差值绝对值、总操作数 $K=k_1+k_2$ 及贪心规则“始终削减最大差值”相关。严格证明贪心最优性,提出三种解法:堆贪心(基线)、排序+水位填充、频率数组从顶向下扫描。其中频率扫描法实现 $O(n + \max d)$ 的最优复杂度,经随机验证与大规模压测确认正确性与高效性。最后探讨理论边界与变体,为同类优化问题提供系统解法框架。
2026-10-23 10:44:42
101
原创 排序排列_CSDN技术解析
本文剖析力扣第3644题:在按位与为 $k$ 的约束下,求使排列可排序的最大 $k$。通过图论建模,将交换关系转化为交换图 $G_k$,并证明:所有含 $k$ 位的数构成一个连通分量,其余孤立。由此得出可排序充要条件为所有错位位置 $p$ 满足 $\text{comp}(\text{nums}[p]) = \text{comp}(p)$,最终收敛至最优解——答案即所有错位位置上 p & nums[p] 的全局按位与,$O(n)$ 一次扫描即可求出。文章详述暴力枚举、并查集、按位贪心与全局按位与四种解法,辅以
2026-10-23 08:38:05
8
原创 2778-特殊元素平方和-深度题解
本题要求计算数组中下标 $ i $ 满足 $ n \mid i $(即 $ n % i == 0 $)的元素平方和。关键在于理解“1基下标”与整除关系的本质:特殊元素对应的是 $ n $ 的正因子位置。通过因子配对原理,可将时间复杂度从 $ O(n) $ 优化至 $ O(\sqrt{n}) $,避免重复枚举。本文系统剖析了四种解法(暴力、因子枚举、推导式、缓存预处理),并提供多语言实现与压测对比,揭示了因子个数稀疏性带来的性能优势,适用于单次查询与多组查询场景,是数论与算法结合的经典范例。
2026-10-22 11:43:02
127
原创 3942 排序排列的最少操作数-深度题解
本文深入解析 LeetCode 3942 题,从二面体群理论建模出发,严格推导两种操作(左旋、反转)生成的置换群结构,揭示可达状态仅为 $2n$ 个正向/反向循环排列。基于群论中的凯莱图与最短词长分析,提出 O(n) 公式解法,给出正向与反向循环的最少操作数闭式表达式,并通过四种独立实现(公式解、宽搜、定位判定、暴力基线)验证正确性。涵盖五种语言工程化代码、完整证明链、压测数据及面试易错点,最终实现高效、严谨、可提交的最优解。
2026-10-22 11:08:28
287
原创 力扣2897·对数组执行操作使平方和最大·深度剖析(CSDN长文)
力扣2897题本质在于“位守恒”:任意次AND/OR操作不改变数组各二进制位的总个数。平方和最大化等价于将高位比特集中于少数元素,利用平方函数的凸性与排列不等式可证贪心策略最优。通过位统计与高位集中构造,可在O(n·31)时间内求解,多语言实现经Benchmark验证高效稳定。本文从数学本质、正确性证明到工程优化全面剖析,揭示“按位独立+集中分配”的核心范式,适用于算法架构师与高阶开发者深度研习。
2026-10-21 15:18:55
179
原创 力扣 3863 区间排序最小操作次数 深度解析
摘要(≤150字): 力扣3863题要求通过区间排序(非整体)使字符串升序,最小操作次数恒为0、1、2、3之一(长度≥3时无解仅当长度=2且降序)。核心洞察:首尾字符是否为全局最值决定答案。若首或尾已正确,一次操作可解;若两端均错但未被“钉死”,两次足矣;仅当首为唯一最大、尾为唯一最小时需三次。全解可在O(n)时间、O(1)空间完成,本质是分类判定而非动态规划。
2026-10-21 13:41:37
112
原创 LeetCode3886可排序整数求和_技术解析
本文详解LeetCode 3886题“可排序整数求和”,核心思想为:循环移动不改变块内多重集,且一个数组可旋转成非递减当且仅当其环形逆序数 ≤ 1。据此,对每个因数 $k$,只需验证每块的多重集是否与排序后对应段一致,且环形逆序数不超过1。通过因数枚举与高效校验(如差分计数器或哈希前缀),可在 $O(d(n) \cdot n)$ 时间内解决,其中 $d(n)$ 为 $n$ 的因数个数,总复杂度约 $1.28 \times 10^7$,适用于 $n \leq 10^5$。
2026-10-20 10:53:53
97
原创 验证拉马努金分拆同余 p(5k+4)≡0(mod 5):四种算法全解析
本文系统解析拉马努金分拆同余 $p(5k+4) \equiv 0 \pmod{5}$ 的验证方法,涵盖递归记忆化、完全背包DP、欧拉五边形数定理与Rademacher渐近公式四种算法。通过手动计算前30个分拆数并编程实现,成功验证同余性质,并扩展至 $p(7k+5)$ 与 $p(11k+6)$。提供Python/C++/Go三语言高性能实现,对比复杂度与压测性能,揭示5、7、11为模数的深层数论原因,适用于算法竞赛、数学研究与面试深度考察。
2026-10-20 10:36:39
364
原创 拉马努金圆周率公式高精度验证:从1项6位到2项15位的收敛奇迹
本文验证拉马努金1914年提出的π级数公式,通过Python decimal、mpmath与SymPy多方案实现,证实其收敛奇迹:仅需1项即达6位精度,2项可达15位。基于斯特林渐近分析,揭示其超快收敛源于阶乘比与指数分母的双重压制效应。对比丘德诺夫斯基等公式,凸显该公式的数学优雅与计算高效性。
2026-10-19 10:59:24
241
原创 LeetCode 3727. 最大交替平方和:从排序贪心到 O(n) 快速选择的完整推导
LeetCode 3727题通过将“重排数组求最大交替平方和”转化为“选择⌊n/2⌋个最小平方值作为负贡献位”的子集问题,利用平方消除符号影响。核心解法为:排序贪心(O(n log n))或快速选择(期望O(n)),前者易实现,后者为面试加分项。双指针可构造最优排列,正确性由交换论证保证。复杂度对比清晰,适用于n≤10⁵规模,工程化中可处理流式数据。
2026-10-19 10:21:12
8
原创 LeetCode 3723. 数位平方和的最大值:从 DP 到 O(n) 贪心的完整推导
LeetCode 3723题要求构造位数为num、数字和为sum的最大平方和整数。暴力DP因状态爆炸(O(num·sum))会超时,需O(n)贪心解法。核心思想:平方函数为凸函数,固定和下,数值越集中平方和越大。贪心策略为从高位到低位尽可能取9,确保平方和最大且字典序最大。通过凸性与交换论证严格证明其最优性。代码实现简洁高效,适用于大规规模数据。
2026-10-19 10:09:26
7
原创 LeetCode 2089 目标下标 五种解法全解析
本文解析 LeetCode 2089 题“找出数组排序后的目标下标”,从暴力排序到 O(n) 计数统计,提出五种解法。核心思想是:排序后目标下标为 [less, less+equal-1],其中 less 为小于 target 的元素数,equal 为等于 target 的个数。最优解仅需一次扫描,时间复杂度 O(n),空间 O(1),适用于大规模数据。对比 Python/C++/Go 实现差异,并探讨值域受限时桶排序优势及工程化扩展,适合面试复盘与算法进阶。
2026-10-19 10:01:11
95
原创 2913. 子数组不同元素数目的平方和Ⅰ
本文系统解析力扣第2913题“子数组不同元素数目的平方和”,从暴力枚举出发,逐步进阶至线性性分解的贡献法。通过固定左端点、频次数组优化、首次出现位置断点累加等策略,实现时间复杂度从$O(n^3)$降至$O(n^2)$。最终揭示平方和的本质:利用平方展开与贡献法,将问题转化为对每个元素及元素对共现次数的统计,结合组合数学思想,实现$O(n \cdot V)$的高效解法,体现算法设计中“从直观到本质”的深刻洞察。
2026-10-18 10:00:27
10
原创 1569. 将子数组重新排序得到同一个二叉搜索树的方案数
本题核心在于:保持二叉搜索树结构不变的重排方案数,本质是满足祖先-后代偏序关系的线性扩展计数。关键洞察是根元素固定,左右子树可任意交错插入,方案数为组合数乘以左右子树递归结果。解法包括递归分治(帕斯卡三角)、阶乘+逆元(费马小定理)、显式建树递归与迭代四类,时间复杂度均为 $O(n^2)$,空间 $O(n)$,最终答案需减1(排除原排列)。
2026-10-18 09:47:58
134
原创 2916. 子数组不同元素数目的平方和 II:从 O(n³) 到 O(n log n) 的全解法拆解与工程压测
本文将「子数组不同元素数目的平方和」问题从暴力O(n³)优化至O(n log n),通过核心恒等式 $d^2 = d + 2\binom{d}{2}$ 拆解问题,提出五种解法:暴力、滑动计数、单点贡献、线段树扫描与离线Fenwick分解。结合数学推导、正确性证明与真实压测数据揭示:理论复杂度 ≠ 实际性能,递归线段树在Python中因开销过大反而慢于O(n²)。最终推荐离线Fenwick解法为工程最优选,兼顾效率与稳定性。
2026-10-17 20:10:29
110
原创 数位和排序的最小交换次数:置换环原理与多解法实现
本文深入解析LeetCode 3551题“数位和排序的最小交换次数”,核心在于理解任意交换下的最小次数由置换环决定:最小交换次数 = 数组长度 - 置换环数量。通过三种方法实现:标准置换环计数(推荐)、并查集统计环数、原地模拟交换,均基于元素互异特性构建原索引到目标索引映射。算法时间复杂度为 $O(n\log n)$,空间复杂度 $O(n)$,适用于大规模数据。文章还总结了同类问题通用解题模板,强调避免将“任意交换”与“相邻交换”混淆,是掌握置换环思想的经典范例。
2026-10-17 17:57:14
14
【小程序开发】基于微信平台的校园失物招领系统实现:完整源码与核心功能设计
2026-02-26
软件工程基于PHP+MySQL的智能停车场管理系统设计与实现:面向毕业设计的全流程解决方案
2026-02-25
【PHP开发安全】基于ThinkPHP6的API安全防护体系构建:涵盖SQL注入防御、CSRF防护与密码加密实战
2026-02-25
游戏开发基于Python与Pygame的贪吃蛇游戏设计与实现:经典小游戏逻辑与界面渲染系统
2026-02-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅