- 博客(1567)
- 收藏
- 关注
原创 988. 从叶结点开始的最小字符串
节点值0表示字母'a'1表示'b',以此类推到25对应'z'。字典序规则与常见字典一样,短的字符串在前,例如"ab""aba"。叶子节点是指没有子节点的节点。这道题虽不难,但对字符串构建方向和树的遍历逻辑有清晰理解是关键。
2025-06-04 03:30:00
213
原创 986. 区间列表的交集
通过双指针遍历两个有序且互不重叠的区间列表,利用区间交集的性质,可以高效求解两个列表的所有交集区间。该方法简单直观,时间复杂度仅为 O(M+N),非常适合处理大规模数据。如果你正在做类似的区间合并、交集或覆盖区间问题,建议先检查区间的排序和是否重叠,结合双指针方法往往能快速得到高效解法。
2025-06-04 03:15:00
261
原创 985. 查询后的偶数和
这道题考察了动态维护数组元素性质的能力,直接遍历计算的做法效率低下,利用增量更新策略,可以将每次查询的计算复杂度降低到常数时间,从而整体算法效率大幅提升。关键是要注意更新前后元素是否为偶数,及时调整偶数和。代码实现简洁明了,易于理解和维护。
2025-06-04 03:00:00
517
原创 984. 不含 AAA 或 BBB 的字符串
这道题是字符串构造与贪心策略结合的典型例题,考察对限制条件的处理和贪心策略的灵活应用。核心是防止连续出现超过两个相同字符,关键点在于动态判断字符串尾部状态,决定下一步插入哪个字符。如果你正在学习字符串算法或贪心策略,这道题是很好的练习。希望这篇文章对你理解题目与解法有帮助!
2025-06-04 02:45:00
394
原创 981. 基于时间的键值存储
方案数据结构set时间复杂度get时间复杂度适用场景线性存储+遍历O(1)O(M)时间戳数目少,查询频率低排序列表+二分查找O(1)追加O(log M)时间戳多,查询频率高树结构(红黑树等)dict + 树结构O(log M)O(log M)插入不保证时间顺序,复杂应用本题中由于时间戳是递增的,使用排序列表加二分查找是最高效且实现简单的方案。
2025-06-04 02:30:00
194
原创 979. 在二叉树中分配硬币
通过后序遍历递归计算每个子树的硬币差值,是解决此类树结构分配问题的经典技巧。利用子树差值向上传递多余或不足,轻松统计最少移动步数。代码简洁且高效,适用于各种二叉树结构。
2025-06-04 02:15:00
150
原创 978. 最长湍流子数组
本题关键在于理解湍流子数组的定义:相邻元素之间大小关系符号必须交替。动态规划巧妙地用两个变量分别记录以升序和降序结尾的最长长度,通过比较和更新,快速求解最大长度。掌握此题,不仅能巩固动态规划思路,还能提升对数组状态转移的理解,非常实用。如果你还想看其他类似题目或更详细讲解,随时告诉我!
2025-06-04 02:00:00
790
原创 974. 和可被 K 整除的子数组
本题利用了前缀和和模运算的数学性质,大幅降低了暴力解法的时间复杂度,是面试中经典的应用场景。理解模运算的思想和如何利用哈希表计数是关键。暴力解法是枚举所有子数组,计算子数组和,判断是否能被 k 整除,时间复杂度 O(n²),对于大数组效率极低。所以,只要找到前缀和取模相等的索引对。共计有 7 个子数组满足条件。,就对应一个满足条件的子数组。,请你返回其中元素之和可被。1 (因为mod=4出现过)要实现高效算法,可以借助。是数组中连续的一部分。modCount状态。
2025-06-04 01:45:00
232
原创 973. 最接近原点的 K 个点
通过距离平方排序是最直观且容易实现的方式,适合大多数场景。堆和快速选择算法可在特定场景提高性能。了解多种解法,可以根据不同的数据规模和需求做出合理选择。如果你有兴趣,我还可以帮你写堆或快速选择的详细代码,或者帮你分析实际使用场景!你怎么看?
2025-06-04 01:30:00
258
原创 971. 翻转二叉树以匹配先序遍历
该解法基于模拟先序遍历并与给定序列比对,简单有效。翻转的判断条件清晰:当左子节点不匹配预期的下一个值时翻转。不需要全树的多次尝试,避免了复杂的回溯。与其他可能使用 BFS 或多次试错的方法相比,效率更高,代码简洁。适合节点值唯一的情况。
2025-06-04 01:15:00
335
原创 【无标题】
理解强整数的定义。如何有效地枚举所有 x^i + y^j 的组合,并去重。特别处理 x = 1 或 y = 1 的边界情况,避免无限循环。这种方法非常适合这种指数增长的枚举问题,且通过剪枝(超过bound时跳出循环)极大地减少了计算量。%20y%5Ej。
2025-06-04 01:00:00
334
原创 969. 煎饼排序
每次定位最大值,利用两次翻转把它放到正确位置。循环缩小排序区间,直到整个数组有序。时间复杂度 O(n²),空间复杂度 O(n),适合题目限制。代码简洁易理解,是学习反转与排序技巧的好例子。
2025-06-04 00:45:00
277
原创 967. 连续差相同的数字
本题利用了数字构造和状态空间搜索的思想,非常适合用回溯或 BFS。通过限制首位数字避免了前导零问题。代码清晰简洁,思路易于理解。如果想要优化,可以用 BFS 或记忆化搜索。题目也可以扩展到更复杂的数字规则,例如差值不固定等。
2025-06-04 00:30:00
292
原创 966. 元音拼写检查器
本题以拼写检查为背景,考察了多层模糊匹配的逻辑处理与优先级控制。通过构造合理的哈希映射和匹配规则,可以实现一个既灵活又高效的纠错系统。无论是在文本编辑器、搜索引擎还是语音输入系统中,这类容错机制都具有极高的实用价值。如果你觉得这类字符串容错题还意犹未尽,不妨尝试实现一个基于编辑距离(Levenshtein Distance)的拼写纠正系统,会更具挑战性和应用深度。如需完整源码或其他题解拓展,欢迎留言交流!🧠💬。
2025-06-04 00:15:00
398
原创 963. 最小面积矩形 II
本题是典型的平面几何 + 哈希分组优化 + 向量计算问题。利用几何规律进行分组;从分组中构造潜在矩形;使用叉积计算面积,避免复杂的角度计算。这是一道考察数学与编程结合能力的经典题目,适合深入掌握!
2025-06-04 00:00:00
149
原创 962. 最大宽度坡
利用单调栈维护递减序列,记录所有可能的坡左端点索引。从右往左遍历寻找最大宽度坡,弹出满足条件的左端点并更新最大宽度。该算法时间复杂度线性,空间复杂度线性,是最优解。如果你在学习过程中对单调栈的思想不太熟悉,可以多练习类似“柱状图最大矩形”、“接雨水”等问题,都会涉及单调栈的应用。
2025-06-03 03:30:00
564
原创 959. 由斜杠划分区域
本题核心是理解如何将字符划分的单元格细分成更小的单元区域。并查集是管理连通关系的优秀工具,适合用于区域合并计数。该方法扩展性强,能适应不同划分方式的区域计数问题。
2025-06-03 03:15:00
251
原创 958. 二叉树的完全性检验
通过层序遍历并标记空节点后出现非空节点的现象,可以准确判断一棵树是否是完全二叉树。该方法简洁高效,易于实现,是面试中常用的经典解题技巧。如果你对这道题目或者解法有任何疑问,欢迎留言交流!
2025-06-03 03:00:00
219
原创 957. N 天后的牢房
本题关键是识别状态空间有限,必有循环出现,利用周期检测优化模拟过程。纯模拟是最简单的思路,但不适合大n。周期检测是本题性能提升的关键,能有效应对大规模天数。本题同时考察对状态编码(使用元组作为键)和循环检测的理解能力。有任何问题或者想看更多类似的题目分析,欢迎留言交流~
2025-06-03 02:45:00
603
原创 955. 删列造序 II
本题通过贪心逐列判断是否删除,维护相邻字符串对排序状态,避免重复比较。保证删除最少列后,字符串数组按字典序非递减排列。时间复杂度与输入规模线性相关,效率较高。该方法适合处理中等规模字符串排序问题。允许字符串长度不一时的处理求删除列之后最长的非递减子序列等。
2025-06-03 02:30:00
316
原创 954. 二倍数对数组
使用哈希计数统计频率,按绝对值排序保证配对顺序正确,逐一匹配元素及其两倍,处理零的特殊情况。该方案简洁且效率较高,时间复杂度为O(n log n),空间复杂度为O(n)。
2025-06-03 02:15:00
290
原创 951. 翻转等价二叉树
翻转等价二叉树的问题,核心就是判断两棵树在节点值相同的基础上,是否存在一系列左右子树交换操作使其结构相同。递归判断不翻转和翻转两种情况即可。这道题考察了递归的思维方式和二叉树的遍历理解,适合对树结构理解和递归逻辑的训练。
2025-06-03 02:00:00
480
原创 950. 按递增顺序显示卡牌
步骤描述牌组排序将牌组排序得到展示牌的正确顺序逆向模拟从最大牌往前处理,每次把队尾牌移到头,再插入当前牌队列状态输出逆向模拟完成后,队列就是初始牌堆顺序正向验证按题目规则模拟展示顺序,验证是递增顺序本题核心在于对“展示-移动”操作进行逆向模拟。通过对最终展示顺序逆向还原,得出初始牌堆顺序。双端队列在操作中扮演关键角色,实现队尾移到队首的操作高效且简单。该方法适用于任意不重复的牌组,能够保证按题目规则显示为递增序列。
2025-06-03 01:45:00
421
原创 949. 给定数字能组成的最大时间
题目核心是全排列生成所有可能组合。判断合法时间区间,并比较得到最大时间。时间复杂度低,代码简单易理解,适合用作排列组合和时间处理的练习题。该题也适合面试中考察候选人对字符串处理、组合排列及边界判断的能力。
2025-06-03 01:30:00
216
原创 948. 令牌放置
该问题的核心是平衡“能量”和“分数”的消耗与获得,利用令牌最小值换分数,最大值换能量的贪心策略,通过双指针实现。该策略保证每一步都做局部最优,最终能获得最大分数。这种思路在类似「最大化利润/收益」的问题中非常常见,适合用贪心和双指针结合的方式求解。
2025-06-03 01:15:00
433
原创 947. 移除最多的同行或同列石头
本题的核心是识别同行同列的石头如何组成连通块;并查集是解题的最佳选择,方便快速合并和查找;计算出连通块数量后,用总石头数减去连通块数即为答案。
2025-06-03 01:00:00
194
原创 946. 验证栈序列
这是一道非常适合练习“栈”的题目,考察的是你对栈操作的理解是否扎实。只要能正确模拟“压栈”和“出栈”的过程,整个解法就非常直观清晰。
2025-06-03 00:45:00
230
原创 945. 使数组唯一的最小增量
这是一道典型的“最小操作 + 去重”问题,排序 + 贪心是最直接、有效的解决方案。排序简化了重复检测;贪心地将冲突元素递增到最小可行值;时间复杂度在处理大规模数据时依旧稳定。
2025-06-03 00:30:00
241
原创 939. 最小面积矩形
这道题是平面几何中结合哈希结构应用的经典题目。通过观察几何特性,我们可以快速筛选出可能构成矩形的点对,并使用哈希集合加快判断效率,最终求得最小面积。
2025-06-03 00:15:00
183
原创 937. 重新排列日志文件
准确分类日志(字母 vs 数字);按照规则对字母日志排序;数字日志保持原顺序拼接在后。不仅是字符串处理能力的体现,也考察了你对排序规则和 Python 数据结构的灵活使用。你可以尝试用 Java、C++ 等语言实现一遍,加深对多语言字符串处理的理解。🚀。
2025-06-03 00:00:00
780
原创 935. 骑士拨号器
定义 dp[i][j] 为长度为 i 的号码,以数字 j 结尾的号码数量。骑士拨号器问题巧妙地利用了骑士在棋盘的跳跃规律,结合动态规划思想,高效计算出所有合法电话号码数量。关键在于抽象骑士跳跃为数字间的邻接关系,通过转移状态不断累积路径数量。该问题常见于面试和算法训练,掌握它可以帮助理解图的动态规划、状态转移与计数问题。如果你对代码有任何疑问,或者想了解不同解法,欢迎留言交流!%207%29。
2025-06-02 03:30:00
543
原创 934. 最短的桥
这道题用 DFS 先标记一个岛,再用 BFS 找到最短桥长度,是非常经典且高效的做法。理解并掌握这类题型,对于图的遍历、连通块的判定、最短路径搜索都非常重要。如果你对代码实现、思路或变种有更多疑问,欢迎继续交流!
2025-06-02 03:15:00
389
原创 932. 漂亮数组
方法思路描述时间复杂度空间复杂度是否保证解暴力枚举枚举排列检测条件极高高否分治递归构造分奇偶索引递归生成漂亮数组O(n log n)O(n)是本题的分治递归方法是一种非常巧妙的构造技巧,既保证了数组的漂亮性质,也能高效生成解。
2025-06-02 03:00:00
623
原创 930. 和相同的二元子数组
这道题充分体现了「前缀和 + 哈希表」的高效思想,是统计满足某种和条件的连续子数组数量的经典模板。此方法也适用于非二元数组,只要需要统计子数组和为某一值时都可以用类似方法处理。如果需要找的不是和为某个值的子数组,而是其他条件(例如乘积、异或和等),则需要针对性质调整算法。掌握这种前缀和和哈希表结合的技巧,对于应对各种子数组和类题目非常有帮助。
2025-06-02 02:45:00
710
原创 926. 将字符串翻转到单调递增
明确单调递增的结构(先0后1)利用分界点拆分字符串通过前缀和和后缀和快速统计翻转代价这是一类经典的字符串状态分割与计数问题,掌握类似思路有助于解决其他类似题目。
2025-06-02 02:30:00
1085
原创 923. 三数之和的多种可能
方法时间复杂度优缺点三重循环暴力搜索O(n^3)简单,但对大数据性能极差排序 + 双指针O(n^2)性能较优,逻辑清晰,适合中等规模问题哈希计数 + 组合数O(n + m^2)对数值范围小的数组更优,通过计数优化计算本题中,排序+双指针是权衡易实现和性能的较好方案。如果你想了解其他编程语言版本实现,或者希望看到更多测试用例和边界情况分析,也可以告诉我!这篇博客结合代码实现和思路解析,希望能帮助你深入理解“三数之和”计数问题的解决方法!
2025-06-02 02:15:00
743
原创 921. 使括号有效的最少添加
本问题是典型的括号匹配问题变形,最核心的思想是通过一个计数器动态维护未匹配的左括号数,并在右括号过多时及时插入左括号补救。这样不仅保证了时间效率,也节约了空间。这套思路不仅适用于本题,还能用于多种括号匹配与平衡相关问题,具有广泛的实用价值。如果你对代码实现或者思路还有疑问,欢迎随时提问!希望这篇博客能帮你系统理解这个问题。
2025-06-02 02:00:00
287
原创 916. 单词子集
这道“通用单词”题目考察对字符串计数及集合关系的理解。通过先预处理words2得到最大字母需求,再判断words1是否满足这个需求,实现了从多个单词的“子集”约束合并成一个全局约束的巧妙方法。代码简洁,思路清晰,时间复杂度合理,是字符串和哈希统计相关题目中的经典解法。如果你想深入,可以尝试改成只用数组计数(长度26的数组)来优化空间和速度,也能通过类似思路实现。如果你还想了解更多类似算法题,欢迎告诉我!我可以帮你整理更多题解和详细解析。
2025-06-02 01:45:00
616
原创 915. 分割数组
本题核心是利用数组的“最大值”和“最小值”的预处理,快速判断每个分割点的合理性。预处理方法代码简单直观,适合初学者理解。常数空间方法更加高效节省内存,适合对性能要求较高的场景。掌握此题思路,有助于理解区间最大/最小的应用和数组划分问题,常见于算法面试。如果你需要,我可以帮你详细讲解代码实现或者帮你用其他语言写代码!你还有什么想了解的吗?
2025-06-02 01:30:00
262
原创 912. 排序数组
通常,我们可以直接调用语言自带的排序函数,但有时题目限制不能用内置函数,并且要求算法时间复杂度为 O(n log n),空间复杂度尽可能低。根据题目“空间复杂度尽可能小”的要求,堆排序是最优选择。它是在原数组上通过构建堆结构完成排序,不需要额外空间(除了递归栈空间,堆排序的递归实现空间很小)。如果你想了解快速排序或归并排序的实现,或者希望我帮你写其他语言版本,随时告诉我!(Heap)数据结构,堆是一个完全二叉树,满足。性质:每个节点的值都大于等于其子节点的值。,请你将该数组升序排列。
2025-06-02 01:15:00
347
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人