自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2086. 喂食仓鼠的最小食物桶数

贪心策略简单且有效,优先最大化单桶服务仓鼠数。直接遍历放桶避免复杂回溯。与其他思路如动态规划相比,贪心更易实现且高效。该题体现了贪心策略中“优先满足最大约束”的思想。

2025-08-03 11:01:04 425

原创 2080. 区间内查询数字的频率

本题通过预处理每个元素出现的位置,结合二分查找实现了高效的区间频率查询。该方法简单易懂,且能够支持高达10^5次的查询,适合大规模数据场景。

2025-08-03 11:00:22 437

原创 2079. 给植物浇水

正确计算每次回河边和回来所需的步数。不要提前回河边,只有水不够时才回河边。统计每一步的移动代价。通过清晰的模拟,可以准确计算完成任务所需的步数。

2025-08-01 22:54:30 855

原创 2075. 解码斜向换位密码

这道题考查了对二维矩阵的斜对角线遍历和编码逆过程的模拟能力。解决这种“特殊结构编码”的题目,关键是能理解原始的编码逻辑并反向模拟。代码简洁逻辑对称性强(模拟编码的逆过程)无需额外假设,完全根据输入进行推导。

2025-08-01 22:53:40 556

原创 2074. 反转偶数长度组的节点

链表遍历技巧分组逻辑与长度计算子链表的原地反转链表指针连接的精确控制如果你对链表不够熟练,这道题可能一开始有些复杂,但一旦掌握了“遍历+分组+条件反转+拼接”这个套路,许多链表题目也就迎刃而解了。

2025-07-31 16:16:53 331

原创 2069. 模拟行走机器人 II

方法是否超时是否易实现是否适用于大数据是否精确模拟朴素模拟✅ 正确,但超时✅❌✅优化模拟✅ 正确✅✅✅周长位置映射法✅ 正确且极快❌ 复杂✅✅✅✅本题是一道经典的模拟与优化结合题。关键在于识别出机器人沿矩形边界运动的循环性,从而用取模运算减少无谓计算。如何用方向数组简化模拟逻辑;如何从模拟中提取数学规律进行优化;如何写出又快又准确的边界控制逻辑。

2025-07-31 16:16:09 351

原创 2064. 分配给商店的最多商品的最小值

核心难点:如何判断某个最大分配数x是否能分配完所有商品。关键技巧:使用二分查找缩小搜索范围,判定函数保证了算法的高效。该方法广泛适用于这类「最小化最大值」的拆分/分配问题。如果想进一步优化,可考虑利用数据结构加速,但本题规模下二分+贪心已经足够。

2025-07-30 15:39:33 1450

原创 2063. 所有子字符串中的元音

该问题的核心是理解每个元音字符在所有子串中的出现次数。利用数学推导避免暴力枚举,使问题复杂度从 O(n²) 降至 O(n)。该思路也适合解决类似“字符贡献总和”的题目。

2025-07-30 15:38:27 694

原创 2059. 转化数字的最小运算数

正确建模状态与操作明确剪枝条件(如只扩展 0~1000 范围)越界后仍要检查是否等于目标值,但不可继续扩展这种题目在图搜索、状态变换类问题中非常常见,也是 BFS 的典型应用场景之一。

2025-07-29 11:51:39 565

原创 2058. 找出临界点之间的最小和最大距离

正确判断局部极值点。使用列表记录临界点索引,便于后续距离计算。通过zip()简洁计算相邻差值,体现 Pythonic 风格。该方法不仅具备良好的性能,也具有较高的可读性和可扩展性。

2025-07-29 11:50:56 473

原创 2055. 蜡烛之间的盘子

本题是前缀和与双指针结合的典型应用场景,在处理需要快速区间查询的问题时非常有用。其核心思想在于通过预处理,把多次查询的复杂度从线性降到常数。前缀和构建双向扫描数组索引缓存边界处理技巧。

2025-07-28 11:52:48 448

原创 2054. 两个最好的不重叠活动

这道题巧妙结合了「区间调度」和「动态规划」技巧,通过排序、二分查找和状态转移高效求解最大价值和。题目限制了时间的严格不重叠,使得状态转移中的边界处理尤为重要。希望本文对你理解类似区间调度问题有所帮助!如果有兴趣,我们还能深入探讨更多区间调度、动态规划相关题目。

2025-07-28 11:52:00 325

原创 2049. 统计最高分的节点数目

明确分数定义和树结构分割方式,用 DFS 计算子树大小,理解删除节点后,分成若干子树的大小计算方法,合理利用数组和字典构造树及辅助存储。这种基于树的分治思路非常经典,掌握这类技巧对后续解决类似树结构的问题大有裨益。

2025-07-27 22:24:26 754

原创 2048. 下一个更大的数值平衡数

数值平衡数是一个特别且有趣的数字定义问题;判断方法主要依赖数字频率统计;简单暴力方法在给定约束内是可行的,但如果数据范围扩大,建议预生成所有数值平衡数再查询;题目考察的是对数字特征的深刻理解及搜索/验证能力。

2025-07-27 22:23:46 436

原创 2044. 统计按位或能得到最大值的子集数目

本题利用位掩码枚举所有非空子集,计算其按位或,并统计最大按位或子集数量,解法直接且高效。对于限制在16的规模,枚举全部子集完全可行,且代码易于理解和实现。

2025-07-26 15:16:12 329

原创 2043. 简易银行系统

这道题的关键是模拟,数据结构使用数组最简洁高效。也可以用哈希表映射账户编号到余额,但题目账户编号连续且从1开始,数组更加合适。在多线程并发场景中,需加锁保证余额操作的原子性,但题目未涉及并发。该实现结构清晰,代码简洁,边界判断完善,能够正确高效处理各种交易请求。本篇文章详细介绍了一个银行账户交易系统的设计与实现方法,涵盖题目分析、代码实现、示例测试及复杂度分析。通过这道题,可以掌握模拟题的思路和细节处理能力。希望对你学习系统设计和算法实现有所帮助。

2025-07-26 15:15:28 446

原创 2039. 网络空闲的时刻

消息往返时间为秒。如果往返时间小于等于重发周期,说明服务器只发送一次消息,回复时间即为。否则服务器会重发多次,重发的时间点为0, …,直到收到回复。最后一次重发消息的发送时间last_send可以通过公式计算:这里的是为了向下取整最后一次重发时间。最后回复时间为。这道题通过 BFS 计算无权图的最短路径,再结合周期性重发策略,巧妙地用数学公式计算出每个服务器最后的回复时间,最后取最大值确定网络空闲时间。题目考察了图的遍历算法、路径计算和周期性事件模拟的结合,非常经典且实用。

2025-07-25 20:03:10 1013

原创 2038. 如果相邻两个颜色均相同则删除当前颜色

这道题通过对字符串连续同色段的长度统计,巧妙简化了博弈过程,将复杂的轮流删除操作转化成对双方删除次数的比较。这种思路适用于类似“只能在连续相同元素中间操作”的问题,避免了复杂的状态模拟,极大提升了效率。你也可以尝试写代码模拟整场游戏验证这个结论,但会更复杂且效率低。

2025-07-25 20:02:23 1166

原创 2034. 股票价格波动

这道题考察了数据结构设计与更新机制,重点在于如何处理“旧数据失效”问题,利用惰性删除实现高效维护最大/最小值,同时通过哈希表快速更新同时间戳的价格。代码简洁、性能优秀,适合面试和实际系统的设计需求。

2025-07-24 07:15:09 641

原创 2033. 获取单值网格的最小操作数

展平二维网格为一维列表。判断是否所有数之间差值是 x 的倍数。将所有数“归一化”成以一个参考数(如第一个元素)为基准的操作步数。排序,选中中位数为目标操作步数,以最小化操作总和。计算所有数变成目标所需的总操作次数。这道题结合了数学推理与贪心策略通过差值模x判断是否有解;通过排序与中位数选择,最小化操作次数;时间与空间复杂度都在可控范围内,适合在面试或竞赛中使用。

2025-07-24 07:14:12 299

原创 2029. 石子游戏 IX

将问题转化为模3意义下的博弈模型理解 mod0 的“奇偶性”对全局策略的影响记住 Bob 会在所有石子移除后直接获胜这一特殊规则最终代码极度精炼,却隐藏了深刻的博弈策略和数学逻辑,是一道非常经典的博弈+数学分类讨论题目。

2025-07-23 22:41:38 943

原创 2028. 找出缺失的观测数据

算法简单高效:利用数学关系确定缺失和范围,贪心分配点数。适合大规模数据:仅线性遍历,内存使用低。若无解及时返回,避免无意义计算。多解问题:只需返回任意一组解,降低复杂度。这道题目既考察了数学推导能力,也考察了贪心算法的设计,非常适合用来训练面试中的思路表达和代码实现能力。

2025-07-23 22:40:53 1185

原创 2024. 考试的最大困扰度

本题的核心是利用滑动窗口维护满足修改次数限制的最长连续子串。通过分别计算以'T'和'F'为目标的最长连续子串,取最大值即可。这种双向滑动窗口技巧,是处理「最多 k 次修改/翻转,求最大连续相同字符」类问题的经典方法。

2025-07-22 09:17:07 993

原创 2023. 连接后等于目标字符串的字符串对

本题通过双重循环暴力枚举(i, j),判断拼接是否等于target,统计满足条件的对数。代码简单,效率在题目限制下足够。适合作为字符串拼接问题的入门练习。

2025-07-22 09:16:21 395

原创 2018. 判断单词是否能放入填字游戏内

你需要实现一个函数,判断给定的单词word是否可以被放入一个填字游戏棋盘board中。棋盘是一个m x n' ''#''#'' ''#'

2025-07-21 16:56:47 361

原创 2017. 网格游戏

这道题虽然看似是路径收集问题,实质是一个零和博弈问题。第一个机器人控制路径影响第二个;第二个机器人总是在剩余点数最多路径中选择。通过枚举策略 + 前缀和加速判断,可以轻松解决这道题,并深入理解“在约束下的最优选择博弈模型。

2025-07-21 16:56:02 1055

原创 2013. 检测正方形

本题属于典型的几何枚举 + 哈希表计数问题,通过构造候选点 + 判断其是否存在于数据结构中,可以高效地统计所有满足条件的正方形组合。你可以根据应用场景选择更适合的优化版本。通过本题可以锻炼你对几何构造、哈希存储、查询优化等综合能力。

2025-07-20 17:32:17 325

原创 2012. 数组美丽值求和

类似于“前缀最大值”“后缀最小值”这种技巧在很多问题中都非常常用,比如“下一个更大元素”、“最大子数组”等。本题的本质是利用这些前缀/后缀信息,避免了不必要的暴力枚举,达到了线性优化效果。

2025-07-20 17:31:37 737

原创 2008. 出租车的最大盈利

定义数组dpdp[i]表示以第i个订单作为最后一个接的订单时,能获得的最大收益。该题核心是求最大权重不相交区间子集,经典算法是先排序后动态规划,利用二分优化。也可以用线性扫描+优先队列,但复杂度和代码复杂度通常更高。通过合理的状态设计和二分查找,能在线性对数时间内完成。

2025-07-19 18:18:14 560

原创 2007. 从双倍数组中还原原数组

这道题通过计数和排序来匹配元素及其双倍,是典型的哈希表应用。合理处理特殊元素和边界条件,是确保算法正确的关键。掌握这类问题对理解数组配对、频率统计和排序有重要帮助。

2025-07-19 18:17:13 1028

原创 2002. 两个回文子序列长度的最大乘积

子序列是从字符串中删除若干字符(也可以不删除)后,剩余字符的相对顺序不变的字符串。本题是回文子序列与位掩码的结合。枚举所有子序列并判断回文,是利用小规模输入限制的典型暴力解法。使用位掩码保证子序列索引的快速判断和不相交验证。适合用来熟悉回文、子序列和位运算技巧的组合。

2025-07-18 00:05:51 427

原创 2001. 可互换矩形的组数

这道题的关键点在于如何准确比较两个矩形的宽高比。直接浮点数比较容易出错且效率较低。通过化简宽高比为最简分数并利用哈希统计出现次数,可以高效解决问题。该题属于经典的哈希计数问题,技巧在于如何规范地表示宽高比。掌握了分数化简技巧,可以应对类似比例问题的判断与计数。

2025-07-18 00:05:07 914

原创 1997. 访问完所有房间的第一天

本题巧妙地利用动态规划,将复杂的跳转模拟简化成递推公式,避免了大规模的时间模拟。关键在于理解访问次数的奇偶性如何影响访问顺序。利用前面访问的结果dp计算后续房间访问天数。时间和空间复杂度均为 O(n),适合 n 达到 10^5 的场景。

2025-07-17 23:46:37 865

原创 1996. 游戏中弱角色的数量

这道题考查了二维排序与贪心的结合应用。关键在于排序策略,防止攻击值相同的角色造成误判。逆序遍历维护最大防御值,能够在一次遍历中判断角色是否弱。这类「二维条件筛选」的问题,类似于“skyline问题”或“包裹问题”,可以借鉴排序+扫描的思路。

2025-07-17 23:45:51 384

原创 1993. 树上的操作

设计一个支持上述三种操作的数据结构。对树结构的父节点数组进行初始化。调用lockunlockupgrade函数时需高效地满足条件判断。节点锁定状态和用户信息需要准确维护。操作次数和节点数均有限制,考虑时间复杂度。这道题考察了树结构上的状态维护与递归遍历能力,涉及祖先和子孙节点的条件判断。通过维护父节点和子节点列表,能方便地查询祖先和子孙。递归深度受限于树高,DFS在题目范围内效率足够。可用类似的方法扩展至更复杂的树状结构状态管理。

2025-07-12 13:56:16 360

原创 1992. 找到所有的农场组

利用题目中“农场为矩形且不相邻”的特点,大大简化了问题,遍历时遇到1直接定位矩形边界,标记后避免重复,该方法简单易实现,时间空间效率都很好。

2025-07-12 13:55:37 254

原创 1986. 完成任务的最少工作时间段

函数dfs(mask)表示完成mask这组任务(用1标记)的最少时间段数。mask == 0表示任务全部完成,返回 0。本题核心是任务划分的子集组合优化问题,利用状态压缩和子集枚举的经典技巧实现最优解。该方法虽然复杂度指数级,但通过合理的剪枝和记忆化缓存,在 14 个任务以内表现良好。此题是理解位运算枚举子集、状态压缩 DP 和记忆化递归的典型练习,适合刷题和算法学习。

2025-07-10 10:35:25 1146

原创 1985. 找出数组中的第 K 大整数

方法优点缺点转整数比较简单直观数据大时会溢出自定义比较适用所有长度数字,灵活代码稍复杂,需保证比较正确预处理排序利用内置排序快速,代码简洁依赖排序稳定和正确的 key本题最优方案是利用 Python 的排序稳定性和灵活的排序键,实现基于长度和字典序的排序,保证高效准确。本题的关键是正确比较字符串表示的大整数。通过先比较长度,再字典序比较,能够实现数字大小排序。利用内置排序和合适的排序键,可以轻松得到第 k 大数字。此方法不仅高效,而且代码简洁,适合面试和实际编程使用。

2025-07-10 10:34:43 446

原创 1981. 最小化目标值与所选元素的差

暴力搜索难以接受,时间复杂度爆炸。动态规划通过保存每步的可能和,有效避免了重复计算。剪枝确保状态集合不过度膨胀,提升性能。对比其他方法如DFS+剪枝,这种DP思路更容易理解和实现,也更稳定。利用位运算优化状态表示(位集)。使用布尔数组替代集合,快速判断和状态。在Python中适当用heap或优先队列优化查找最小差。

2025-07-08 00:15:00 318

原创 1980. 找出不同的二进制字符串

这道题的精妙之处在于它是构造题而不是查找题。使用康托尔对角线法,可以快速构造一个保证不在原数组中的字符串;这种方法是数学构造中的经典技巧,也是很多面试官考察的重点;理解这个技巧,对提升构造思维能力大有裨益。

2025-07-08 00:00:00 411

空空如也

空空如也

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

TA关注的人

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