自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(117)
  • 收藏
  • 关注

原创 LeetCode 1780 判断一个数字是否可以表示成三的幂的和

这种方法的巧妙之处在于利用三进制的表示特性。通过简单的除法和余数运算,我们就能高效地判断一个整数是否可以表示为不同三的幂之和。这种方法不仅代码简洁,而且运行效率高,适用于所有整数范围内的判断。实际上,这种方法还可以扩展到其他类似的问题,例如判断一个数是否可以表示为不同2的幂之和(二进制检查是否有重复1),或者不同4的幂之和(四进制检查)。这体现了数学在算法设计中的强大应用价值。

2025-04-25 13:06:08 494

原创 LeetCode 3040 相同分数的最大操作数目II

这个问题要求我们在确保所有操作分数相同的情况下,求出最多能进行多少次操作。这个问题涉及到数组的动态变化、多种操作选择以及分数一致性要求。为了解决这个问题,我们采用以下步骤:确定所有可能的操作分数。使用动态规划和记忆化搜索来记录和优化操作步骤。递归尝试所有可能的操作,并更新记忆表以记录最优解。

2025-04-24 11:36:42 1051

原创 LeetCode 1298 你能从盒子里获得的最大糖果数

这道题目考察了我们对模拟过程的理解和实现能力。通过使用队列和标记数组,我们能够有效地模拟打开盒子的过程,并计算可以获得的最大糖果数目。在面对类似的问题时,记住要仔细分析每个元素之间的关系,并找到合适的模拟方法来解决问题。希望这篇文章能帮助你更好地理解和掌握这道题的解法。

2025-04-23 13:18:12 661

原创 LeetCode 1292 元素和小于等于阈值的正方形的最大边长

本题主要考察了前缀和矩阵的应用以及如何高效地查找满足条件的最大正方形。通过构建前缀和矩阵,我们能够快速计算任意子矩阵的和,从而在较短的时间内解决问题。这种技术在图像处理、矩阵分析等领域有广泛的应用,例如计算图像中的区域亮度、检测特定模式等。

2025-04-22 15:44:43 1076

原创 LeetCode 239 滑动窗口最大值

滑动窗口最大值问题是一个经典的算法问题,通过使用双端队列可以高效地解决。这种方法不仅提高了算法的效率,还展示了数据结构在优化算法中的重要性。希望这篇文章能帮助你更好地理解和应用滑动窗口技术。在实际应用中,选择合适的算法和数据结构至关重要。对于滑动窗口问题,双端队列提供了一种高效且优雅的解决方案。通过维护一个单调递减的队列,我们可以在 O(n) 的时间复杂度内完成计算,这对于处理大规模数据尤为重要。

2025-04-19 15:33:56 1096

原创 LeetCode 443 压缩字符串

字符数组压缩算法是一个典型的原地操作问题,通过双指针法能够在 O(n) 时间复杂度和 O(1) 空间复杂度下完成任务。该算法的核心在于高效地识别连续重复字符组,并将它们转换为压缩形式。通过详细解析和示例分析,我们希望读者能够深入理解这一算法的原理和实现细节。

2025-04-18 12:49:55 1032

原创 LeetCode 2919 使数组变美的最小增量运算数

dp[i]:表示将数组nums的前i个元素变成美丽数组所需的最小操作次数。通过动态规划,我们可以高效地解决这个问题。动态规划的关键在于:定义合适的状态dp[i]。找到状态转移方程。初始化边界条件。返回最终结果。希望这篇博客能帮助你更好地理解这个问题的解法!如果你有任何疑问或需要进一步的解释,欢迎留言讨论。

2025-04-17 11:11:09 771

原创 LeetCode 2105给植物浇水II

这道 LeetCode 算法题通过设置 Alice 和 Bob 浇水的有趣场景,考查了我们对双指针法的运用以及对复杂逻辑的处理能力。双指针法在解决这类涉及数组遍历和条件判断的问题时,具有简洁高效的特点。通过精确地模拟两人的浇水过程,特别是对相遇时各种情况的细致处理,我们能够准确地计算出重新灌满水罐的次数。在实际编程应用中,这类问题的解题思路和方法可以有很多拓展。

2025-04-16 10:28:26 1196

原创 LeetCode 775 全局倒置与局部倒置

这道题目看似需要复杂的计数操作,实则通过挖掘全局倒置与局部倒置的内在联系,实现了思路的巧妙转化。在解题过程中,理解概念间的包含关系、推导等价判断条件以及设计合适的遍历策略是关键。通过详细剖析代码和复杂度,希望能帮助大家更透彻地掌握此类问题的解法。在后续的算法学习中,遇到类似涉及数组元素关系判断的题目,便可借鉴这种分析思路,快速找到解题方向。

2025-04-15 13:08:14 692

原创 LeetCode LCR157 套餐内商品的排列顺序

通过回溯算法和排序去重,我们可以高效地生成字符串的所有不重复排列。这种方法不仅适用于字符串排列问题,还可以扩展到其他组合优化问题,比如生成子集、组合等。希望本文能帮助你更好地理解回溯算法和去重策略的应用!如果你有任何问题或建议,欢迎在评论区留言。

2025-04-14 18:30:21 835

原创 LeetCode 34 在排序数组中查找元素的第一个和最后一个位置

二分查找(Binary Search)是一种在有序数组中查找某一特定元素的搜索算法。它的基本思想是将数组分成两部分,然后比较目标值与中间元素的大小。如果目标值等于中间元素,则查找成功;如果目标值小于中间元素,则在数组的左半部分继续查找;如果目标值大于中间元素,则在数组的右半部分继续查找。通过不断地将搜索范围缩小一半,二分查找的时间复杂度为O(log n)。通过本文的详细讲解,我们了解了如何使用二分查找算法在有序数组中查找目标值的开始和结束位置。这种方法不仅高效,时间复杂度为O(log n)

2025-04-13 17:41:21 677

原创 LeetCode 1223 投骰子模拟

通过动态规划,我们以状态转移精准解决了骰子序列计数问题。关键在于定义状态、拆解情形并严格取模。若对细节有疑问,欢迎随时交流!

2025-04-12 12:24:07 430

原创 LeetCode1718 构造字典序最大的可行序列

通过深度优先搜索(DFS)尝试填充序列:从左到右逐位放置数字,若当前放置不满足条件则回退并重试,直至构造完整序列。),一旦找到合法序列即为字典序最大。: 由于优先尝试大数字(

2025-04-11 12:55:53 490

原创 LeetCode 125 验证回文串

要解决这个问题,主要分为两个大的步骤。第一步是对输入的字符串进行预处理,也就是把大写字符转换为小写字符,并且移除所有非字母数字字符;第二步是判断处理后的字符串是否为回文串。这里我们采用双指针法来进行判断,双指针法是一种非常高效且常用的算法技巧,它可以在不额外使用大量空间的情况下,快速地完成字符串的比较。通过本文的分析,我们详细介绍了如何使用 Java 语言判断一个字符串是否为回文串。主要步骤包括字符串的预处理和使用双指针法进行回文判断。这种方法的时间复杂度为,空间复杂度为,是一种高效且实用的解决方案。

2025-04-10 10:52:34 1196

原创 LeetCode 33 搜索旋转排序数组

在算法与数据结构的探索旅程中,我们常常会遇到各种极具挑战性的问题。“搜索旋转排序数组” 便是其中之一,它巧妙地结合了数组的排序特性与旋转操作,对我们的逻辑思维和编程能力提出了较高要求。通过深入研究并解决这个问题,我们不仅能提升对 Java 语言的运用熟练度,更能深入理解如何在复杂情境下设计高效的算法。

2025-04-09 11:17:35 502

原创 LeetCode 941 有效的山脉数组

判断有效山脉数组这一问题,虽然在算法设计上并不复杂,但通过对数组的遍历和条件判断,巧妙地考察了我们对数组特性和逻辑控制的掌握程度。在解题过程中,清晰的思路和细致的步骤分解是关键。这道题不仅深化了我们对数组操作的理解,更为解决更复杂的算法问题提供了重要的思维范式。在实际编程中,类似的解题思路,如通过有序的步骤分析、边界条件的检查,将帮助我们应对各种复杂的算法挑战。变体问题:给定一个数组,寻找其中最长的有效山脉子数组。拓展应用:在数据分析中,判断数据趋势是否符合特定的上升和下降模式。

2025-04-08 12:44:43 638

原创 LeetCode 1638 统计只差一个字符的子串

在算法学习的过程中,我们经常会遇到一些有趣的字符串问题。今天就来探讨一道这样的题目:给定两个字符串 s 和 t ,找出 s 中的非空子串的数目,这些子串满足替换一个不同字符以后,是 t 串的子串1。希望通过这篇博客,能让大家清楚地理解这道题的解题思路和方法。如果有任何疑问,欢迎在评论区留言讨论。我们可以通过三重循环来遍历所有可能的子串组合,然后检查每对子串是否恰好只有一个字符不同。

2025-04-07 13:10:59 475

原创 LeetCode 1169 查询无效交易

在当今数字化时代,金融交易系统时刻处理着海量的交易数据。为了保障交易的安全性与合理性,系统需要实时检测异常交易。本文要探讨的 “找出可能无效交易列表” 问题,就来源于金融交易场景。借助解决这个问题,我们能深入理解如何运用 Java 语言,巧妙地设计算法和数据结构,实现对复杂业务逻辑的处理。

2025-04-06 13:11:52 1005

原创 LeetCode 3047 求交集区域内的最大正方形面积

这道题目通过矩形交集和正方形面积的计算,巧妙地融合了几何知识和算法逻辑。解题过程中,我们不仅加深了对二维平面坐标系统的理解,还进一步熟悉了嵌套循环、条件判断和数学运算在算法设计中的应用。希望通过本文的讲解,读者能对这类问题有更深入的认识,提升解决算法问题的能力。

2025-04-05 12:21:32 486

原创 LeetCode 1817 查找用户活跃分钟数

这道题通过巧妙运用哈希表和集合,解决了用户活跃分钟数的统计和分布问题。算法的时间复杂度为 O (n),其中 n 为操作日志的长度,因为主要操作是对操作日志进行一次遍历。空间复杂度为 O (n + k),哈希表存储用户活跃分钟信息的空间复杂度为 O (n),结果数组占用空间为 O (k)。

2025-04-04 12:01:00 689

原创 LeetCode 914 卡牌分组

这道题的关键在于将分组问题巧妙地转化为求最大公约数的问题。通过统计频次并计算 GCD,能够高效地解决问题,其时间复杂度为 O (N),其中 N 是卡牌的数量。

2025-04-03 11:08:22 893

原创 LeetCode 2761 和等于目标值的质数对

埃拉托斯特尼筛法是解决质数问题的经典算法,通过预处理质数列表可以大大提升后续查询效率。在本题中,我们利用筛法快速得到质数集合,再通过遍历验证可能的质数对,最终在 O (n) 时间内完成所有验证操作。这种方法在处理较大 n 值时依然高效,是解决类似问题的推荐方案。提前剪枝:处理小 n 值的特殊情况奇偶分离:减少 50% 的循环次数倍数跳跃:更高效地标记非质数。

2025-04-02 10:09:32 904

原创 LeetCode 419 棋盘上的战舰

通过巧妙利用相邻单元格的状态,我们可以在一次遍历中高效统计舰队数量。这种方法不仅避免了重复计算,还确保了时间和空间复杂度的最优。关键技巧:在二维数组问题中,利用相邻元素的状态减少重复判断,是优化时间复杂度的常用手段。

2025-04-01 14:11:50 412

原创 LeetCode 211

字典树是解决字符串匹配问题的高效工具,结合递归处理通配符,可以优雅地实现本题要求。这种方法在需要频繁进行插入和搜索操作的场景下表现优异,例如拼写检查、自动补全等。

2025-03-31 18:32:53 478

原创 LeetCode 1492 n的第K个因子

暴力法:简单直观,适合小规模数据。优化法:利用因子成对特性,大幅减少遍历次数,适合大规模数据。关键优化点:分治小因子和大因子,避免重复计算。

2025-03-28 12:45:20 520

原创 LeetCode 1486 数组异或操作

异或操作的本质是 “差异累积”,结合数学规律(如周期性、前缀和)可突破线性时间限制。本题的优化思路适用于所有 “连续整数异或” 问题(如 LeetCode 260. 只出现一次的数字 III)。达 1e9 时,暴力解法不可行,优化方法仍 O (1) 时间。为偶数),可类似分解为基数异或和末位处理。求所有元素的按位异或(XOR)结果。直接生成数组并逐个异或,直观易懂。[异或周期性示意图](异或一次(否则抵消)。

2025-03-27 11:12:30 825

原创 LeetCode 2760 最长奇偶性

偶数开头奇偶交替元素不超限。

2025-03-26 20:32:05 1178

原创 LeetCode 524 通过删除字母匹配到字典里最长单词

时空平衡:线性时间复杂度,常数空间,适合大规模数据。逻辑简洁:双指针法直观易懂,避免复杂数据结构。这道题教会我们如何用双指针的 “舞蹈” 优雅地检查子序列,同时用优先级规则筛选最优解。就像整理书架:先按高度(长度)排序,再按书名(字母序)排列,最终找到最合适的 “那本书”。下次遇到字符串匹配问题时,记住双指针的魔力:让字符在遍历中自然匹配,让优先级在比较中浮出水面。代码的简洁,正是算法之美的最佳注脚!📜✨。

2025-03-25 10:12:38 1009

原创 LeetCode 942 增减字符串匹配

low双指针 + 贪心策略:通过维护最小值和最大值指针,每次根据字符选择极值,确保每一步选择的最优性,最终线性时间内构造合法排列。

2025-03-24 12:43:05 1110

原创 LeetCode 3038 相同分数的最大操作数目I

忽略非相邻元素组合:操作不要求元素连续,只需两两配对。固定前两数之和:未枚举所有可能的和,导致遗漏最优解。未处理元素重复使用:双指针法确保每对元素仅使用一次(通过左右指针移动)。枚举所有可能的操作分数(两数之和)。排序 + 双指针法高效计算每个分数对应的最大操作次数。取所有可能分数中的最大值。该方法通过暴力枚举(合理范围)和高效匹配(双指针)的结合,确保了正确性和一定的效率。在实际编程中,需注意边界条件(如数组长度 < 2)和元素重复使用的问题。适用场景。

2025-03-23 13:11:10 752

原创 LeetCode LCR 033 字母异位词分组

场景推荐方法理由通用场景(教学 / 竞赛)排序分组法逻辑清晰,易于调试长字符串 / 性能敏感频率统计法避免排序开销多语言协作排序分组法统一逻辑,跨语言一致性变位词本质:字符相同 → 排序或频率统计生成唯一键。哈希表核心作用:O (1) 时间复杂度的分组查找。复杂度平衡:排序的 O (m log m) vs 频率统计的 O (m)(根据场景选择)。

2025-03-22 11:31:38 643

原创 LeetCode 2517礼盒的最大甜蜜度

排序:为贪心选择提供有序基础。二分查找:在可能的甜蜜度范围内高效搜索最大值。贪心验证:用 “每次选最近满足条件的元素” 策略,快速判断可行性。这种方法的时间复杂度低(主导为排序的 O (n log n)),空间复杂度友好,是解决 “最大化最小值” 问题的标准解法。通过本题,读者可以掌握二分查找与贪心算法的结合技巧,举一反三解决类似问题。贪心函数中使用增强 for 循环()提升可读性。提前终止循环()减少不必要的遍历。如果有任何疑问或想进一步探讨,欢迎在评论区留言!😊。

2025-03-21 14:33:43 1099

原创 LeetCode LCR177 撞色搭配

遇到 “找不同” 的问题时,不妨想起袜子的舞会:让异或的魔法消除冗余,让位的光芒照亮隐藏的答案!🧦✨。

2025-03-20 10:49:19 1443

原创 LeetCode 1742盒子中小球的最大数量

利用数字和的范围限制(1~45),使用固定长度数组统计频率,线性遍历完成计数。

2025-03-19 18:22:27 699

原创 LeetCode 326 3的幂

循环迭代法:通用、易理解,适合教学和通用场景。数学性质法:Java 特化优化,极致性能,适合已知整数范围的场景。选择建议:根据语言特性和场景选择。若需跨语言或通用逻辑,选循环法;若追求极致性能(Java),选数学法。

2025-03-18 12:51:34 1102

原创 LeetCode1614 括号的最大嵌套深度

核心思想:用计数器跟踪深度,左括号时更新最大值。代码模板:遍历字符 + 双变量记录当前 / 最大深度。优化点:实时更新最大值,避免二次遍历。通过这种方法,我们可以在线性时间内解决问题,既高效又易于理解。无论是面试还是实际开发,这种 “轻量级” 的计数器思路都值得掌握!

2025-03-17 14:28:14 463

原创 LeetCode2593 标记所有元素后数组的分数

本题的核心是贪心选择最小元素,结合优先队列高效获取最小未标记元素,通过标记数组避免重复处理。这种贪心策略确保每次选择最优解,最终得到全局最优分数。理解标记逻辑(自己 + 相邻)和优先队列的排序规则是解题关键。适用场景:需要多次选择极值(最小 / 最大)并处理关联元素的问题,优先队列是常用工具。标记数组的使用在类似 “跳跃游戏”、“区间覆盖” 问题中也常见,值得举一反三。

2025-03-16 11:06:39 978

原创 LeetCode 3280 将日期转换为二进制表示

核心考点:日期解析、二进制转换、字符串操作优化。逆向思维:通过预分配数组和逆向填充,避免字符串拼接的性能损耗,这是处理固定格式字符串的常用技巧。扩展性:若需处理大量日期(如日志批量转换),解法二更具优势;日常开发中解法一的简洁性更值得优先选择。代码启示:编程中往往有多种解法,选择时需权衡可读性性能和场景需求,这正是算法优化的魅力所在。

2025-03-15 11:54:36 656

原创 LeetCode 1447 最简分数

核心逻辑:双重循环遍历分母和分子,通过 GCD 判断互质。优化方向:欧拉函数预处理适合大规模数据,减少重复 GCD 计算。易错点:边界条件(n=1 时返回空)、分子分母范围的严格控制。适用场景当 n≤1000 时,暴力法足够高效(LeetCode 实测 n=1000 时耗时约 2ms)。当 n>10^4 时,建议使用欧拉函数优化。欧几里得算法的实际应用数论中互质的判断方法算法优化的常见思路(空间换时间)

2025-03-11 21:57:13 641

原创 LeetCode 2380 二进制字符串重新安排顺序需要的时间

暴力模拟法:直观易懂,适合小规模输入。数学规律法:高效优化,适合大规模输入。实际开发中需根据场景选择合适方法。掌握字符串处理技巧和数学规律推导能力,对解决类似问题至关重要。如果您有任何疑问或建议,欢迎在评论区交流!🚀。

2025-03-10 19:47:12 779

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除