- 博客(344)
- 收藏
- 关注
原创 【Leetcode】随笔
本文精选3道高频贪心算法题,解析从局部最优到全局最优的思维过程。在分发饼干问题中,通过排序+双指针实现小饼干优先满足小胃口;跳跃游戏问题通过维护最远可达距离,避免动态规划的高复杂度;无重叠区间问题按结束时间排序,优先选择结束早的区间。贪心算法的关键在于策略的正确性证明和排序依据的选择,适用于资源分配、覆盖范围和区间调度类问题。掌握贪心思维能显著提升算法效率,将时间复杂度从O(n²)降至O(n)。
2025-12-12 19:38:45
916
原创 【Leetcode】随笔
本文精选3道LeetCode高频二分查找变形题,深入剖析二分法的核心逻辑与边界处理技巧。针对旋转排序数组(33题),提出通过判断有序区间来缩小范围的解法;在无序数组找峰值(162题)中,利用单调性趋势实现二分搜索;对于查找元素边界(34题),采用两次二分分别定位左右边界。通过问题分析、模型构建到代码实现的全过程,帮助读者掌握二分法的灵活应用,突破变形题的解题瓶颈,实现从基础二分到高阶应用的思维跃迁。
2025-12-12 19:31:02
747
原创 【Leetcode】随笔
本文精选3道LeetCode高频字符串处理题目,解析不同场景下的优化解法:1)最长回文子串采用中心扩展法,在O(n²)时间内高效解决问题;2)字符串相乘通过模拟竖式乘法,避免大数溢出问题;3)翻转字符串单词使用双指针法实现原地操作。每道题从常规思路的局限性出发,深入讲解优化技巧和实现细节,帮助掌握字符串处理的算法思维与编码实践。
2025-12-11 20:23:59
1172
原创 【Leetcode】随笔
本文精选3道LeetCode高频边界与细节题,帮助读者规避算法题中的常见陷阱。第一题有效括号嵌套深度(1111)考察括号匹配的分层细节,需注意计数器更新时机;第二题寻找两个正序数组的中位数(4)重点处理二分查找的边界极值,需优先二分较短数组;第三题加油站(134)关注贪心策略的循环边界,需正确处理环形判定和起点选择。每道题均剖析"常规思路→踩坑点→正确解法"的全过程,强调边界条件、极值处理和循环判定等关键细节,帮助培养"考虑周全不踩坑"的解题习
2025-12-11 20:20:23
900
原创 【Leetcode】随笔
本文精选3道高频算法题,通过巧妙选择数据结构优化解题效率:1)前K个高频元素(小顶堆替代全排序,时间从O(n log n)降至O(n log k));2)柱状图最大矩形(单调栈快速定位边界,时间从O(n²)降至O(n));3)实现Trie前缀树(高效字符串检索,解决哈希表前缀匹配低效问题)。每道题详细拆解"常规思路痛点→数据结构选型→代码实现"的全过程,帮助培养"见题选工具"的算法直觉。
2025-12-10 13:53:03
1221
原创 【Leetcode】随笔
本文精选三道高频动态规划问题,详解如何从暴力DP解法优化到最优解: 打家劫舍 II:针对环形房屋排列问题,通过拆分为两个线性子问题(不偷首/不偷尾)规避边界限制,将空间复杂度优化到O(1)。 最小路径和:通过分析状态依赖关系,将二维DP压缩为一维数组(O(n)空间),甚至直接在原矩阵上修改实现O(1)空间优化。 最长回文子序列:采用按区间长度从小到大的遍历顺序,确保子状态先被计算,解决区间DP的状态依赖问题。 核心优化技巧:环形问题拆分、空间压缩、遍历顺序调整。掌握这些方法能显著提升DP问题的解决效率。
2025-12-10 13:33:19
1304
原创 【Leetcode】随笔
本文精选3道高频算法题,通过数学建模实现高效解题。第一题「阶乘后的零」通过统计因数5的个数替代直接计算阶乘,避免数值溢出;第二题「直线上最多的点数」利用最简分数表示斜率,避免浮点精度问题;第三题「完全平方数」应用四平方和定理,将动态规划解法从O(n√n)优化至O(√n)。这些案例展示了数学思维在算法优化中的关键作用:通过问题抽象和数学建模,能突破常规编程思路的限制,实现更高效率的解决方案。
2025-12-09 19:49:44
961
原创 【Leetcode】随笔
本文精选3道高频“脑筋急转弯”式算法题,通过独特视角解析常规思路的局限性,并给出高效解法。第一题利用倍增思想优化除法运算,将时间复杂度从O(n)降至O(logn);第二题将数值计算转化为环形链表检测,使用快慢指针判断快乐数;第三题巧妙地将数组索引与值映射为链表,通过找环入口定位重复数。这些解法均突破常规思维,展示了算法设计中的关键洞察力:当遇到特殊限制时,转换问题模型往往能开辟新思路。
2025-12-09 19:46:40
1004
原创 【Leetcode】随笔
本文精选了三道需要思维转换的算法题,通过分析常规思路的局限性,展示了如何通过独特视角高效解题。第一题利用数组下标实现原地哈希,在O(1)空间内找到缺失的最小正整数;第二题通过二进制数的奇偶性递推规律,用动态规划将时间复杂度降至O(n);第三题则将倒水问题转化为数学问题,运用贝祖定理快速判断可行性。文章提炼出解决此类问题的三个关键策略:原地利用已有数据结构、寻找二进制规律、将模拟问题数学化,强调培养多角度思考能力的重要性。这些案例表明,突破常规思维往往能化繁为简,高效解决算法难题。
2025-12-08 21:24:32
1183
原创 【Leetcode】随笔
本文精选了三道算法面试中的冷门难题,通过逆向思维、图论建模和自定义排序等创新解法突破常规思路。在最大交换问题中,采用贪心策略的逆向应用实现O(n)时间复杂度;对于移除石头问题,巧妙转化为图论连通性问题并用并查集解决;最大数问题则通过自定义比较器实现最优拼接排序。这些案例展示了"问题抽象→模型构建→代码落地"的完整解题链路,帮助开发者突破刷题瓶颈,提升算法建模能力。核心方法论在于剥离问题表象,挖掘数学本质,选择合适的数据结构和算法策略。
2025-12-08 21:22:37
947
原创 【Leetcode】随笔
文章摘要 本文解析了三道LeetCode困难题目的巧妙解法:1) 最小体力消耗路径(1631题)通过二分答案+并查集将最短路径问题转化为连通性判断;2) 矩形区域不超过K的最大数值和(363题)利用二维降维思想,结合前缀和与有序集合实现高效查找;3) 最大相等频率(1224题)运用哈希表双频统计精准把控数据关系。每道题都展示了将复杂问题转化为经典算法的思维过程,提供了二分查找、并查集、降维打击等高效解题范式,对提升算法思维极具启发性。
2025-12-07 21:05:45
883
原创 【Leetcode】随笔
本文通过拆解3道经典算法题的底层逻辑,揭示解题思维的通用方法论。接雨水问题展示了"边界约束下的区域计算"逻辑,其解法可迁移到二维接雨水、直方图最大矩形等问题;二叉树序列化问题揭示了"结构化数据的线性表示"原则,该思路同样适用于N叉树和图结构的序列化。文章强调,掌握算法本质比单纯刷题更重要,通过"现象→本质→通用解法"的思维链路,可培养可迁移的解题能力。核心方法论包括:确定边界类型、选择合适数据结构、设计通用计算公式等。
2025-12-07 20:45:23
745
原创 【Leetcode】随笔
本文探讨了如何通过问题转化思维解决复杂算法问题。第一部分将正则表达式匹配拓展为多模式匹配问题,通过动态规划记录精确匹配字符数和通配符使用次数,最终按匹配精度排序筛选最优模式。第二部分将路径规划问题扩展为带资源消耗和任务触发的场景,采用三维DP状态记录任务触发次数和资源消耗,求解满足约束的最优路径。两种解法都展示了将复杂需求拆解为可计算指标并复用基础算法框架的创新思路,适用于搜索引擎匹配、智能物流等实际场景。
2025-12-06 21:21:17
875
原创 【Leetcode】随笔
本文探讨算法在企业业务场景中的落地应用,选取LeetCode三道经典题目进行业务化改造。第一题将最长连续序列扩展为电商用户行为动态分析系统,通过哈希表管理实时行为序列,支持最长有效转化路径查询(O(1)时间复杂度)。第二题改造二叉树最大路径和为组织绩效优化问题,引入协作系数和叶子节点数约束,采用后序遍历结合状态DP实现。每道题目均提供可复用的工程化代码实现,并分析其业务价值,展示算法从理论原型到业务落地的完整链路,为开发者处理复杂业务场景提供参考范式。
2025-12-06 21:18:40
714
原创 【Leetcode】随笔
本文探讨了多算法协同解决复杂问题的策略,通过三个案例展示了算法融合的实践方法: 在回文串分割问题中,结合动态规划与预处理技术,解决了带权重和分割次数限制的扩展需求。通过预处理回文子串信息,再利用动态规划处理分割约束,实现了高效求解。 网络传输问题融合了Dijkstra算法与任务调度策略,在考虑节点容量和路径优先级的情况下,通过优先队列管理任务分配,计算最优传输方案。 这些案例展示了单一算法难以解决的复杂问题,可以通过算法协同获得突破。关键在于识别问题中的不同约束条件,选择互补的算法组合,并通过合理的状态设计
2025-12-05 19:11:05
1007
原创 【Leetcode】随笔
文章摘要: 本文通过3道经典算法题的约束反转训练,展示如何突破常规思维框架。①将最长递增子序列拓展为"波动子序列",通过双状态DP跟踪交替趋势;②反转路径总和问题的起点,用后序遍历实现叶到根的多目标搜索;③在编辑距离中引入双向操作代价和替换次数限制,采用三维DP求解。每道题均提供完整代码和逆向思维解析,帮助培养举一反三的解题能力。(149字)
2025-12-05 19:09:23
1150
原创 【Leetcode】随笔
本文探讨了如何将LeetCode算法题改造为工程实践方案,以LRU缓存为例进行拓展。原题要求设计时间复杂度O(1)的LRU缓存,而工程场景需要解决高并发下的热点数据问题。提出的冷热分区LRU方案将缓存分为热区和冷区,新数据先进入冷区,达到访问阈值后迁移到热区,淘汰策略优先冷区。通过扩展双向链表和哈希表结构,新增访问计数和分区迁移逻辑,保持O(1)时间复杂度。代码实现展示了双LRU结构的具体操作,包括节点迁移和淘汰策略,兼顾性能与工程需求。
2025-12-04 21:46:40
1153
原创 【Leetcode】随笔
本文探讨如何通过拓展经典算法题来突破套路化思维,以三道题目为例展示解题思路的跃迁过程。在二叉树最大路径和问题中,引入节点删除代价约束,采用后序遍历+状态DP处理保留/删除两种状态;在全排列II问题中,增加位置禁止列表,通过回溯剪枝实现约束校验;最后在股票买卖问题中,扩展至交易次数随机分配场景,利用动态规划分层处理交易状态。每道题均提供完整代码与思维解析,强调从固定算法到灵活应变的转变,为解决复杂问题提供方法论指导。
2025-12-04 21:45:06
977
原创 【Leetcode】随笔
本文介绍了三种经典LeetCode算法题的业务场景拓展应用:1)接雨水问题引入地形损耗系数,计算实际保留雨量;2)正则表达式匹配增加模糊匹配规则,支持最短子串检索;3)双数组中位数问题扩展为带权重的多数组中位数计算。每种改造方案均包含详细算法思路、完整代码实现和实际业务落地场景分析,帮助开发者将算法能力转化为工程实践价值。
2025-12-03 19:17:52
512
原创 【Leetcode】随笔
本文探讨了如何将LeetCode困难题算法迁移到实际业务场景,通过3个经典案例展示算法适配思路:1)带权重的最长有效括号子串(动态规划+栈辅助),用于代码语法分析;2)带优先级的区间合并(排序+贪心),适用于任务调度;3)高度受限的最大矩形面积(单调栈),可应用于建筑与容器设计。每个案例包含业务需求分析、算法改进方案、完整代码实现及落地场景说明,体现了算法思维到业务解决方案的转化路径。
2025-12-03 19:15:16
526
原创 【Leetcode】随笔
1)边界用例考虑不全,需提前处理极端场景;2)时间复杂度估算失误,应优化暴力解法;3)空间复杂度浪费,采用降维和滚动数组;4)逻辑漏洞,需拆解验证关键步骤;5)代码冗余,通过模块化简化实现。通过实战案例对比错误与正确代码,帮助读者规避常见陷阱,提高刷题效率。
2025-12-02 18:37:45
1079
原创 【Leetcode】随笔
本文探讨了算法题中多重约束叠加场景的解题策略,聚焦三类高频组合约束:1)"权值+数量"约束,通过动态规划增加数量维度实现多目标平衡;2)"时间/空间+动态场景"约束,采用双堆、哈希表等数据结构实现增量更新;3)"形状/格式+合法性"约束,运用降维压缩和滑动窗口控制边界。文章提出通用解题框架:先拆解约束优先级,选择基础算法后嵌入约束逻辑,最后优化性能瓶颈,为复杂约束问题提供系统性解决方法。
2025-12-01 16:02:31
658
原创 【Leetcode】随笔
本文提出了一种支持权重与过期机制的数据流中位数算法,基于双堆(大根堆+小根堆)结构,结合哈希表记录数据状态。通过动态维护堆平衡、触发式过期清理和权重累计计算,高效实现add()和get_median()操作。其中,add()根据数值与权重调整堆结构,get_median()清理过期数据后按累计权重定位中位数。示例代码展示了Python实现,验证了算法在带权数据流和时效性场景下的可行性,适用于需动态统计时效数据的应用场景。
2025-12-01 15:55:11
961
原创 【Leetcode】随笔
股票交易问题(LeetCode 188拓展版):提出带交易成本与冻结期的股票交易模型,使用动态规划状态机方法解决。通过定义hold/free/idle三种状态,处理交易次数限制、交易成本和冻结期约束,空间优化至O(k),时间复杂度O(nk)。示例验证了算法正确性。 矩阵最长路径问题(LeetCode 329拓展版):解决带方向约束的矩阵递增路径问题,采用记忆化DFS结合方向过滤。通过memo数组存储子问题解,仅允许按指定方向移动,递归计算每个单元格的最大路径长度。该方法高效处理了方向约束条件下的
2025-11-29 21:28:45
1321
原创 【Leetcode】随笔
带优先级的课程表问题:在课程选择中引入优先级属性,通过排序(按截止时间升序和优先级降序)与最大堆动态调整策略,确保优先选择高优先级课程。示例代码展示了如何结合堆优化实现高效调度,适用于任务管理等场景。 带权值的最长递增路径问题:在矩阵中寻找权值和最大的严格递增路径,采用记忆化DFS记录每个单元格的最大路径价值,避免重复计算。该方法通过递归探索四个方向并存储中间结果,高效求解最优路径,适用于图论与动态规划场景。 两题均通过巧妙的数据结构(堆、记忆化数组)和策略优
2025-11-29 21:27:10
1088
原创 【Leetcode】随笔
通过先合并重叠区间,再转化为背包问题求解满足目标价值的最小成本,时间复杂度为O(n log n + n×target)。第二题在LeetCode 433最小基因变化基础上加入突变限制,采用双向BFS结合禁止规则校验,记录突变类型以避免违规操作,提升搜索效率。两题均通过分步拆解和优化策略(如DP价值剪枝、双向搜索)有效解决复杂约束问题,适用于资源调度、路径规划等实际场景。
2025-11-27 16:45:25
643
原创 【Leetcode】随笔
带权重的删除被覆盖区间:通过排序和贪心策略,在删除被覆盖区间时最大化权重和。核心思路是按左端点升序、右端点降序排序,优先保留覆盖范围大且权重高的区间,累加被覆盖区间的权重。 带传送门的跳跃游戏:利用BFS和哈希表优化跳跃路径,预处理传送门位置并标记使用状态,确保每个传送门仅用一次,从而求出到达终点的最少跳跃次数。 两种解法均通过预处理和贪心/BFS策略优化性能,适用于复杂场景下的区间处理和路径搜索问题。
2025-11-27 16:43:58
808
原创 【Leetcode】随笔
本文摘要: 复写零问题(带删除机制): 在数组复写零的基础上,新增删除非零元素功能以最大化零的数量 采用双指针+贪心策略,逆向填充数组并优先保留零元素 时间复杂度O(n),空间复杂度O(n),适用于固定长度数组优化场景 带权值的最小跳跃问题: 在经典跳跃游戏基础上增加位置权值消耗维度 使用动态规划维护最小权值消耗和对应跳跃次数 结合贪心策略优化跳跃范围,避免无效计算 解决同时优化权值和跳跃次数的复合目标问题 两个题目均通过创新性条件扩展经典算法题,展示了双指针、贪心和动态规划等核心算法思想的灵活应用。
2025-11-26 18:34:55
564
原创 【Leetcode】随笔
奇怪的打印机:通过区间动态规划解决最少打印次数问题,利用字符重复性优化状态转移,实现O(n³)时间复杂度的解法。第二题"最大子矩阵"拓展为带权值版本,采用降维思想将二维矩阵转换为一维数组,结合前缀和与有序集合进行高效查找,确保在O(m²n log m)时间内找到满足约束的最大子矩阵权值和。两题均通过巧妙的算法设计避免了暴力解法的高复杂度,为类似问题提供了可复用的解题框架。
2025-11-26 18:33:41
513
原创 【Leetcode】随笔
本文提出两种动态规划算法的优化解决方案。针对带权重的最长重复子数组问题,设计双目标DP状态,在O(mn)时间内同步追踪最长长度和最大权重和,通过严格边界处理确保正确性。对于分割回文串III问题,采用预处理回文修改次数与区间DP相结合的方法,先计算子串回文化代价,再通过分割点遍历寻找最优解。两种方案均通过示例验证了有效性,并分析了时间空间复杂度及优化空间。代码实现展示了清晰的DP状态转移逻辑,具有较强的可拓展性,能适应不同应用场景的需求。
2025-11-25 11:38:27
129
原创 【Leetcode】随笔
通过容斥原理将"恰好K个不同整数"转化为"最多K个"与"K-1个"的差值,利用滑动窗口高效计算子数组个数。第二题拓展了最小覆盖子串问题,通过合并多模式串字符需求,用滑动窗口寻找满足所有模式串字符条件的最小子串。两个案例都展示了滑动窗口在解决特定字符串/数组问题中的高效性,时间复杂度均为O(n),适用于处理连续子序列相关的最优解问题。
2025-11-25 11:35:55
220
原创 【Leetcode】随笔
本文分享了三个LeetCode困难题目的解题思路和代码实现: 最大矩形:通过降维将二维矩阵转化为柱状图问题,利用单调栈高效求解,时间复杂度O(mn)。 寻找中位数:采用二分查找和分割线法在O(log(min(m,n)))时间内定位两个有序数组的中位数。 戳气球:运用动态规划逆向思维,通过区间DP计算最大得分,时间复杂度O(n³)。 每个问题都包含详细的分析、清晰的解题步骤和可运行的Python代码,帮助读者掌握高效算法设计技巧。
2025-11-23 21:16:02
37
原创 【Leetcode】随笔
优美的排列II(667题):通过交替增减的贪心策略构造数组,前k步生成k种差值,剩余元素单调填充,确保相邻差值种类数符合要求。时间复杂度O(n)。 最大交换(670题):将数字转为字符数组,记录数字最后出现位置,从左到右查找比当前数字大的最大值进行交换,确保交换后数字最大。时间复杂度O(n)。 正则表达式匹配(10题):使用动态规划,分情况处理普通字符、'.'和'*',通过状态转移判断字符串与模式是否完全匹配。时间复杂度O(mn)。 三题均采用高
2025-11-22 21:11:50
138
原创 【Leetcode】随笔
最大频率栈(895题):通过哈希表+栈映射实现O(1)时间的push/pop操作,维护元素频率和推送顺序,确保pop时返回高频且最近的元素。 鸡蛋掉落(887题):使用动态规划+二分优化,将问题转化为"k个鸡蛋m次尝试最多覆盖的楼层数",空间优化至O(k),时间复杂度O(k log n)。 分割数组最大值(410题):采用二分查找确定最大和上限,结合贪心验证分割可行性,时间复杂度O(n log sum)。 这些解法通过巧妙的数据结构设计
2025-11-22 21:08:39
177
原创 【Leetcode】随笔
本文介绍了三个算法题的解法:1)使用快速选择算法在O(n)时间复杂度内找出无序数组中最小的K个数;2)通过单调递减队列高效求解滑动窗口最大值问题,时间复杂度O(n);3)将目标和问题转化为子集和问题,采用动态规划统计满足条件的表达式数目。三题均通过优化算法显著提升了效率,其中快速选择避免全排序,单调队列减少重复计算,动态规划利用数学转化简化问题。代码实现包含详细注释和测试用例,适合算法学习参考。
2025-11-21 21:16:36
161
原创 【Leetcode】随笔
重构字符串(767):基于贪心算法和最大堆优先放置高频字符,确保相邻字符不同,时间复杂度O(n log 26)。 非重叠矩形随机点(497):通过前缀和加权选择矩形,结合二分查找和均匀随机实现整数点等概率选取,时空复杂度分别为O(log n)和O(n)。 祖玛游戏(488):采用回溯+剪枝策略,枚举插入位置和颜色,递归消除连续球,通过优化避免无效搜索。 每个问题均附详细分析、代码示例及复杂度说明,提供算法优化的核心逻辑与实践指导。
2025-11-21 21:09:58
186
原创 【Leetcode】随笔
俄罗斯套娃信封问题通过排序和最长递增子序列求解最多套娃数;分割数组最大值问题使用二分查找将数组分成k个子数组使最大和最小。每个问题均提供清晰的解题思路、代码实现和复杂度分析,帮助读者掌握高效算法。
2025-11-20 17:05:17
454
原创 【Leetcode】随笔
N皇后II利用回溯+位运算优化标记已占用位置,高效统计可行方案数;缺失的第一个正数采用原地哈希+置换归位的巧妙方法,在O(1)空间内找到最小缺失正整数。三个题目分别展示了动态规划、回溯算法和数组处理的高级技巧,代码均通过示例验证了正确性。
2025-11-20 17:04:29
534
原创 【Leetcode】随笔
课程表 III(贪心+最大堆) 通过按截止日排序课程,动态维护最大堆调整选课组合,确保总时长不超过截止日,时间复杂度O(n log n)。 编辑距离(动态规划) 使用DP表记录子串转换的最小操作数,通过状态迁移覆盖替换、删除和插入三种操作,时间复杂度O(mn)。 矩阵最长递增路径(DFS+记忆化) 采用深度优先搜索配合记忆化缓存,避免重复计算,显著提升效率,时间复杂度O(mn)。 这些方法展示了贪心策略、动态规划和记忆化搜索在解决复杂问题中的巧妙应用。
2025-11-20 17:03:01
221
原创 【Leetcode】随笔
数据流中的第K大元素(703):使用最小堆维护最大的K个元素,堆顶即为所求。时间复杂度为O(n log k),适合高频数据流场景。 矩形区域不超过K的最大数值和(363):通过降维处理将二维问题转化为一维,结合前缀和与有序集合优化查找,时间复杂度O(n² m log m)。 最长连续序列(128):利用哈希表去重并判断序列起点,避免重复遍历,实现O(n)时间复杂度的高效解法。 三种方法分别展示了堆、降维+二分查找、哈希表在算法中的巧妙应用。
2025-11-19 19:27:20
570
微信小程序课程设计复制粘贴版文档-哔哩哔哩教程同步-源码
2024-03-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅