
python
文章平均质量分 67
Joyner2018
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
1600. 王位继承顺序
本题是一道模拟题,但它对树的遍历、数据建模和继承逻辑的理解都提出了较高的要求。我们使用前序 DFS 与字典集合结构,简洁高效地完成了需求。正确维护每个人的孩子列表;利用递归生成继承顺序;将死亡状态单独记录,不修改结构;原创 2025-06-19 03:30:00 · 676 阅读 · 0 评论 -
1599. 经营摩天轮的最大利润
本题核心在于模拟摩天轮运营的过程,合理维护等待游客和已登舱游客数,计算不同轮转次数下的利润,最后找到最大利润对应的轮转次数。题目重点在于理解题意、仔细处理游客等待、合理判断停止时机。代码实现中,主要考验模拟能力和对状态变量的把控。你可以用这套模板,解决类似的模拟问题,也可以练习对边界情况的判断(如所有游客都没到、登舱人数不足等)。原创 2025-06-19 03:15:00 · 503 阅读 · 0 评论 -
1594. 矩阵的最大非负积
本题难点在于乘积可能为负数,必须同时维护最大积和最小积,防止负负得正的情况丢失。若只维护最大积,负数乘积路径会导致结果不正确。动态规划状态定义与转移需要细致处理边界和负数情况。取余操作必须在最终结果后进行,防止中间计算取余导致错误。此题思路适合处理乘积类型路径动态规划问题,也可以推广到其他带符号乘积问题。原创 2025-06-19 03:00:00 · 417 阅读 · 0 评论 -
1593. 拆分字符串使唯一子字符串的数目最大
本题通过回溯枚举所有拆分方案,确保子字符串唯一,找到最大拆分数。思路清晰,代码简洁,适合加深对回溯与字符串处理的理解。时间复杂度较高,适合中小规模字符串。原创 2025-06-19 02:45:00 · 722 阅读 · 0 评论 -
1590. 使数组和能被 P 整除
本题巧妙地将“去除子数组”转化为寻找“子数组和模p为target”的问题,利用前缀和与哈希表的结合,极大提升了效率。这种“前缀和 + 哈希表”的思路,广泛应用于模运算相关的子数组和问题,是刷题和面试中的经典套路。原创 2025-06-19 02:30:00 · 308 阅读 · 0 评论 -
1589. 所有排列中的最大和
看似简单的求区间和问题,却增加了“重新排列数组”的限制,使得问题变得有趣和复杂。中的数字,目标是让所有查询结果之和达到最大值。由于答案可能很大,请将最终结果对。你可以任意重新排列数组。原创 2025-06-19 02:15:00 · 321 阅读 · 0 评论 -
1584. 连接所有点的最小费用
这道题是最小生成树的经典应用,借助 Prim 算法即可解决。代码简单且高效,能够轻松应对中小规模数据。通过分析题目,可以快速构建思路,明确使用 MST,理解曼哈顿距离的计算。如果想进一步优化,可以研究带堆的 Prim 算法或者其他针对曼哈顿距离的几何优化技巧。原创 2025-06-19 02:00:00 · 427 阅读 · 0 评论 -
1583. 统计不开心的朋友
本题考察双向偏好关系的判断,关键是快速定位亲近度的排序。通过构建rank矩阵,可以将复杂的亲近度比较简化为常数时间的索引比较。整体实现简单明了,时间空间复杂度均为 O(n²),适合中等规模问题。原创 2025-06-19 01:45:00 · 842 阅读 · 0 评论 -
1578. 使绳子变成彩色的最短时间
本题通过对连续相同颜色的气球序列进行处理,采用贪心策略,保留最大代价的气球,移除其他,计算移除时间最小总和。代码简洁,逻辑清晰,时间和空间效率均优。原创 2025-06-19 01:30:00 · 556 阅读 · 0 评论 -
1577. 数的平方等于两数乘积的方法数
这道题巧妙地结合了数组乘积的枚举和平方值的匹配,采用哈希表预统计乘积频率,再用平方值做查询,避免了暴力的三重循环。代码结构清晰,易于理解与实现。时间复杂度在中等规模数据下效率较好。对于更大规模数据,可以进一步用数字频率统计优化。如果你喜欢这类结合数学和数据结构的题目,欢迎继续深入研究更多类似的算法问题!原创 2025-06-19 01:15:00 · 251 阅读 · 0 评论 -
1574. 删除最短的子数组使剩余数组有序
这道题考察了对数组非递减性质的理解和双指针技巧的应用。通过寻找最长非递减前缀和后缀,再利用双指针拼接,避免了暴力遍历,降低了时间复杂度。核心点:用最长非递减前缀和后缀分割数组,拼接判断。技巧:双指针快速寻找满足条件的拼接点。效果:实现了线性时间解决问题。原创 2025-06-19 01:00:00 · 205 阅读 · 0 评论 -
1573. 分割字符串的方案数
通过对字符串中'1'分布的观察与分析,结合数学组合的思想,我们能够快速计算满足均分条件的分割方案数。此题不仅锻炼了字符串处理能力,更体现了用数学思想简化问题的重要性。原创 2025-06-19 00:45:00 · 1005 阅读 · 0 评论 -
1567. 乘积为正数的最长子数组长度
start = 0# 跳过 0,将数组划分段start += 1break# 遍历当前非零段= 0:end += 1# 负数个数判断else:start = end + 1 # 处理下一段本题的核心是理解乘积符号与负数个数的关系,利用零进行数组分割,最后用简单的贪心算法统计最长长度,既保证了时间效率,也保证了空间效率。此方法在实际面试和算法竞赛中非常实用,是“处理符号问题”的典型技巧。原创 2025-06-19 00:30:00 · 520 阅读 · 0 评论 -
1562. 查找大小为 M 的最新分组
给你一个数组arr,它是一个的排列。你还有一个长度为n的二进制字符串s,最初所有位都为0。每一轮操作中(共n步),第i步将会把字符串中下标为arr[i]的位设置为1(下标从1开始)。你需要找出最后一次在这个二进制字符串中出现长度恰好为m的连续1子串的步骤。返回这一步的编号(从 1 开始),如果不存在这样的步骤,返回 -1。这道题考察的核心是对动态区间的维护能力,尤其是如何高效合并、拆分区间,并在过程中进行状态判断。使用数组记录区间长度(只在区间边界记录);原创 2025-06-19 00:15:00 · 1192 阅读 · 0 评论 -
1561. 你可以获得的最大硬币数目
这个问题是一个非常典型的贪心算法应用场景。通过排序和巧妙地每轮选择最优的三堆分配顺序,你就能最大化自己的收益。不仅考查了排序与贪心的结合能力,也提醒我们在面对“次优选择”问题时,如何在局部最优中获取全局最优。原创 2025-06-19 00:00:00 · 495 阅读 · 0 评论 -
1559. 二维网格图中探测环
图的建模(字符网格视作图)DFS 深度优先搜索路径回退控制(防止走回头路)环的判断逻辑(访问已访问点且不是上一步)原创 2025-06-18 03:30:00 · 1361 阅读 · 0 评论 -
1558. 得到目标数组的最少函数调用次数
这道题看似复杂,但利用二进制位拆解和加法/乘法操作本质,巧妙地将复杂问题转换为对二进制的操作计数,既保证了算法效率,也保证了正确性。如果想做这类“混合操作”的问题,一定要深入理解操作对应的数值和位运算关系,才能找到简洁而有效的解法。原创 2025-06-18 03:15:00 · 544 阅读 · 0 评论 -
1557. 可以到达所有点的最少点数目
这道题利用了 DAG 的结构特性,发现所有入度为0的节点构成了最小的覆盖集合。相比于其他复杂的图论问题,利用入度统计就能快速求解。该方法简洁高效,且易于实现,非常适合面试和算法题目练习。原创 2025-06-18 03:00:00 · 187 阅读 · 0 评论 -
1552. 两球之间的磁力
这道题用排序 + 二分查找 + 贪心验证完美解决最大化最小距离问题。思路清晰,代码简洁,效率高。典型问题也适合用来训练二分搜索思维。原创 2025-06-18 02:45:00 · 626 阅读 · 0 评论 -
1551. 使数组中所有元素相等的最小操作数
操作是单位“转移”最终元素均为平均值差值绝对值和与最小操作次数的关系通过数学推导和对称性分析,得出简洁高效的公式:最小操作次数配合代码实现,简单且高效。O%281%29。原创 2025-06-18 02:30:00 · 444 阅读 · 0 评论 -
1546. 和为目标值且不重叠的非空子数组的最大数目
利用前缀和 + 哈希表快速定位满足条件的子数组。通过维护一个变量end记录上一个子数组的结束位置,实现贪心选择不重叠子数组,确保最大数量。该方法简洁高效,时间空间复杂度均为 O(n)。原创 2025-06-18 02:15:00 · 164 阅读 · 0 评论 -
1545. 找出第 N 个二进制字符串中的第 K 位
本题核心在于理解字符串的递归定义和结构拆分。利用长度规律和字符串的对称反转性质,实现了对第 k 位的快速定位。递归实现简洁高效,避免了巨大的字符串拼接和存储开销。这类题目适合训练递归思维和对字符串结构的分析能力。原创 2025-06-18 02:00:00 · 495 阅读 · 0 评论 -
1541. 平衡括号字符串的最少插入次数
这道题本质是括号匹配问题的变体,但由于“每个左括号对应连续两个右括号”的特殊规则,使得传统的单个右括号匹配逻辑不适用。为了设计有效的算法,我们需要清楚维护当前字符串中“还需要多少个右括号”来匹配已出现的左括号。请返回使字符串平衡所需的最少插入次数。这版代码改正了上述细节,并且逻辑清晰,适用于所有测试用例。利用贪心策略,一次遍历即可完成计算,时间和空间都高效。need 是0(偶数),不插入,need += 2。need 是2(偶数),不插入,need += 2。遍历字符串字符,逐步更新。原创 2025-06-18 01:45:00 · 416 阅读 · 0 评论 -
1540. K 次操作转变字符串
这道题虽然规则复杂,但通过数学分析,利用模运算周期性和计数分配思想,可以快速判断是否能完成转换。每次操作必须使用对应的切换次数i字符切换次数与操作编号的模26关系,每个差值操作的编号必须分散开(相差26)。这也是算法中常见的周期性调度与计数应用的经典案例。d%20+原创 2025-06-18 01:30:00 · 436 阅读 · 0 评论 -
1536. 排布二进制网格的最少交换次数
找到每一行中最右边的1的索引,记作。如果一行全是0,我们用-1表示。对于第i行,我们需要满足才是合法的。如果不满足,从第i+1行往下找最近一个满足的行,将它“冒泡”到当前位置,记录交换次数。如果在剩余的行中没有任何一行满足要求,说明无法完成构造,直接返回-1。这道题本质是一个结构重排问题,只不过限制了只能交换相邻的元素,这种题型在实际编程中和笔试中都较常见。原创 2025-06-18 01:15:00 · 361 阅读 · 0 评论 -
1535. 找出数组游戏的赢家
这个题目很好地考察了对数组操作的理解能力和对优化模拟的技巧掌握。不一定要按题意模拟每一步,尝试寻找性质规律;维护最小状态(当前胜者和胜场)即可得解;注意边界情况:比如k大于数组长度时,最终胜者一定是数组最大值。原创 2025-06-18 01:00:00 · 296 阅读 · 0 评论 -
1530. 好叶子节点对的数量
本题考查的是树的递归遍历与路径问题。通过深度优先搜索,我们可以有效地自底向上收集叶子节点的距离信息,并在遍历过程中完成对符合条件的叶子节点对的统计。原创 2025-06-18 00:45:00 · 414 阅读 · 0 评论 -
1529. 最少的后缀翻转次数
本题关键是避免直接模拟翻转,通过维护一个“当前状态”变量,贪心地翻转位置,使时间复杂度降为线性。这种“状态切换”的思路在类似“区间翻转”、“位反转”问题中也很常见。通过分析状态变化,可以有效推导最优解。原创 2025-06-18 00:30:00 · 744 阅读 · 0 评论 -
1525. 字符串的好分割数目
这道题的本质是一个字符串前缀与后缀的特征比较问题,借助额外的数组存储辅助信息,可以大大简化统计过程。整个解法非常适合用于理解「前缀和思想」在非数值问题中的应用。原创 2025-06-18 00:15:00 · 345 阅读 · 0 评论 -
1519. 子树中标签相同的节点数
本题是典型的“树上信息统计”问题。使用 DFS + 哈希表/Counter 可以快速统计每个子树的标签分布。Python 的极大地简化了代码逻辑。树结构递归时,避免回到父节点是关键,否则容易造成死循环。原创 2025-06-18 00:00:00 · 399 阅读 · 0 评论 -
1514. 概率最大的路径
从“最短路径”转换为“最大概率路径”;运用最大堆优先搜索,实时更新路径最优解;数据结构使用得当,复杂度控制合理。原创 2025-06-17 03:30:00 · 1054 阅读 · 0 评论 -
1513. 仅含 1 的子串数
本题核心是识别连续1的长度并利用等差数列求和公式高效计算子串数目。通过简单的线性扫描和计数,即可在 O(n) 时间内得到结果。该方法简洁且避免了暴力枚举的超时问题,适合大规模字符串。原创 2025-06-17 03:15:00 · 1507 阅读 · 0 评论 -
1509. 三次操作后最大值与最小值的最小差
本题核心是利用最多修改3个元素的机会,等价于从排序数组中删除3个元素,求剩余元素最大值和最小值的最小差值。通过排序和枚举4种删除方式,能在O(n log n)时间内高效求解。这种思路适用于类似“修改固定次数元素,最小化某种差值”的问题。原创 2025-06-17 03:00:00 · 282 阅读 · 0 评论 -
1508. 子数组和排序后的区间和
该题最直观的解法是通过前缀和 + 全部枚举 + 排序实现。对于较大规模的数组,这种的算法可能性能不佳。如果要进一步优化,可以尝试利用二分法+优先队列的思路,按顺序找到第 k 小的子数组和,或者使用线段树等高级数据结构。但对于中小规模问题,这种暴力解法简单易懂,且实现方便。原创 2025-06-17 02:45:00 · 841 阅读 · 0 评论 -
1504. 统计全 1 子矩形
本题利用了「预处理连续宽度 + 向上扩展统计」的巧妙方法,大大减少了重复计算,达到了可接受的效率。此思路在类似「二维矩阵中计算满足某条件的子矩形数目」问题中也十分有用。原创 2025-06-17 02:30:00 · 434 阅读 · 0 评论 -
1503. 所有蚂蚁掉下来前的最后一刻
有一块长度为n单位的木板。木板上有若干只蚂蚁,每只蚂蚁以每秒 1 单位的速度移动,部分蚂蚁向左走,部分向右走。当两只方向不同的蚂蚁在某点相遇时,它们会同时改变移动方向并继续移动。蚂蚁在任意时刻到达木板端点时,会立即从木板上掉落。现给出:木板长度n两个整数数组left和right,分别表示初始时刻向左和向右移动的蚂蚁的位置。请你计算最后一只蚂蚁掉落木板的时刻。向左移动的蚂蚁,掉落时间 = 它初始位置(距离左端)向右移动的蚂蚁,掉落时间 =n -它初始位置(距离右端)原创 2025-06-17 02:15:00 · 338 阅读 · 0 评论 -
1498. 满足条件的子序列数目
本题的核心是利用排序和双指针技巧,结合指数幂预计算,高效统计满足条件的子序列数目。通过分析元素的最小值和最大值,有效减少枚举范围,避免指数爆炸。这类题目常考察数学计数与双指针技术,掌握后对类似问题应对自如。原创 2025-06-17 02:00:00 · 421 阅读 · 0 评论 -
1497. 检查数组对是否可以被 k 整除
题目考察了对数组元素余数的分组配对问题;利用余数统计来判断配对可能性,避免了复杂的配对搜索;代码简洁高效,符合面试及实际应用要求。原创 2025-06-17 01:45:00 · 665 阅读 · 0 评论 -
1492. n 的第 k 个因子
这道题核心在于利用因子对的性质,实现 O(√n) 的高效查找,而不是盲目遍历 1 到 n。代码简洁明了,易于理解。遍历 1 到 √n 期间,维护因子计数,提前返回;或结合二分等方法。原创 2025-06-17 01:30:00 · 404 阅读 · 0 评论 -
1488. 避免洪水泛滥
每个湖泊开始是空的。当某天下雨时:如果该湖泊是空的,则变满。如果该湖泊已满且没有被抽干,洪水发生,失败。晴天可以抽干任意一个湖泊,让它变空。目的是在下雨之前,尽可能抽干将来还会下雨的湖泊。本题是典型的贪心策略应用问题。使用哈希表管理湖泊状态,优先队列管理未来下雨顺序,是关键。通过对未来事件的预处理和优先处理“最紧急”湖泊,保证不发生洪水。这种思路在处理“先后顺序与优先处理问题”时非常有效。原创 2025-06-17 01:15:00 · 704 阅读 · 0 评论