自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 1993. 树上的操作

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

2025-07-12 13:56:16 333

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

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

2025-07-12 13:55:37 240

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

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

2025-07-10 10:35:25 1135

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

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

2025-07-10 10:34:43 432

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

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

2025-07-08 00:15:00 298

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

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

2025-07-08 00:00:00 403

原创 1976. 到达目的地的方案数

这道题是 Dijkstra 算法的一个拓展版本,除了求出最短路径长度,还需要统计路径数目。这种题型在图论竞赛和工程中都很常见,比如地图导航、数据包传输路径计数等。

2025-07-07 00:45:00 546

原创 1969. 数组元素的最小非零乘积

这道题是一道非常典型的数学构造 + 位操作建模问题抽象交换操作的意义;利用二进制位的对称性和全局可控性;构造数学表达式,结合快速幂求解。不仅锻炼了对位运算和数论的理解,也要求具备较强的建模能力。

2025-07-07 00:30:00 1234

原创 1968. 构造元素不等于两相邻元素平均值的数组

该问题可以通过对数组排序后分成两半,再交错排列的策略轻松解决。这种排列避免了中间元素成为邻居元素平均值的情况。代码实现简洁且高效,适用于大规模数组。

2025-07-07 00:15:00 1839

原创 1963. 使字符串平衡的最小交换次数

通过统计括号的平衡度balance,找出字符串中最大的不平衡负值;根据最大不平衡值计算最少的交换次数;交换次数公式为,有效地修复了字符串中的错误顺序;算法时间复杂度为 O(n),空间复杂度为 O(1),适合大规模数据。

2025-07-07 00:00:00 724

原创 1962. 移除石子使总数最小

方法是否正确使用的数据结构时间复杂度说明错误版本❌最大堆(误放值)O(k log n)错误在于放回了移除量正确版本✅最大堆(放回剩余)O(k log n)每次从最大堆取最大堆执行移除操作。

2025-07-06 00:15:00 447

原创 1959. K 次调整数组大小浪费的最小总空间

这道题结合了「动态规划」、「分段最优化」、「前缀和」与「区间最大值预处理」等多个算法思想,是一道很适合锻炼 DP 思维的题目。

2025-07-06 00:00:00 509

原创 1958. 检查操作是否合法

本题考察了二维棋盘上的方向遍历与颜色连续性判断。纯逻辑8方向判断方案不修改棋盘,更安全,易于理解。通过检查涂色点在各方向的邻接格颜色组合,判定是否形成满足条件的“好线段”。算法时间复杂度为常数(固定8x8棋盘及8方向),效率足够。

2025-07-05 00:15:00 447

原创 1954. 收集足够苹果的最小花园周长

若x >= 0,则|x| = x若x < 0,则|x| = -x本题巧妙利用了对称性和数学公式,将问题从遍历无限点的暴力计算,转化为数学表达式计算。利用单调性应用二分查找,快速找到满足条件的最小边长n。代码简洁高效,满足大数据量的需求。

2025-07-05 00:00:00 651

原创 1953. 你可以工作的最大周数

这道题通过简单的数学推导和贪心思路,巧妙地解决了「不能连续两周做同一个项目」的限制。它归结为判断最大任务项目与其他任务项目的任务数量关系,从而推断最大可工作的周数。掌握这类问题的思路,可以帮助你应对更多涉及任务调度和交替执行的限制类题目。

2025-07-04 00:15:00 312

原创 1947. 最大兼容性评分和

暴力全排列的时间复杂度为 O(m!),当 m 较大时不可行。状态压缩 + 记忆化搜索能在保证正确性的同时,有效剪枝和复用状态,适合 m 不太大的场景。如果 m 很大,还可以考虑匈牙利算法或KM算法来做最大权匹配,但实现更复杂。正确计算每对的兼容性评分构建合理的搜索策略找到最大匹配使用状态压缩和记忆化避免指数爆炸这也是匹配类问题中很典型的解法思路,掌握了这一套路,对类似题目大有裨益。

2025-07-04 00:00:00 551

原创 1946. 子字符串突变后可能得到的最大整数

从左到右遍历字符串。找到第一个使映射数字原数字的位置,开始替换。替换过程中,只要映射数字>=原数字就继续替换。遇到映射数字原数字时停止替换。替换结束后返回结果。本题考察贪心思想在字符串操作中的应用。关键在于合理定位开始和结束替换的时机,从左向右遍历字符串,同时保证替换的连续性和最大化结果。通过映射数组change和贪心策略,不断尝试替换,直到出现使结果变小的数字时停止,最终得到最大可能的数字字符串。

2025-07-03 10:01:18 703

原创 1943. 描述绘画结果

本题通过扫描线算法解决,核心是将线段开始和结束作为事件点,动态维护当前颜色集合的和,输出颜色不变的区间。实现简单,逻辑清晰,是处理区间重叠、颜色混合类问题的经典范式。

2025-07-03 10:00:31 807

原创 1942. 最小未被占据椅子的编号

通过时间排序和模拟来保证事件顺序正确。通过两个堆动态维护椅子的分配和释放。利用最小堆保证分配的椅子编号始终是最小可用的。掌握这类问题的处理技巧,对类似资源调度、区间分配等题目大有裨益。

2025-07-03 00:15:00 1543

原创 1937. 扣分后的最大得分

设dp[r][c]表示:在第r行选择第c列时,所能获得的最大得分。(对所有 k ∈ [0, n-1])这是一种从上一行所有位置k转移到当前列c的过程,惩罚是距离差abs(c - k)。这道题巧妙地结合了动态规划和前缀最大值的技巧,避开了朴素暴力的效率瓶颈,是一道非常经典的“转移代价”动态规划题。分方向维护最大值(如从左到右、右到左)将惩罚函数拆分为线性表达式预处理可复用的最大值原创不易,转载请注明出处 🙏。

2025-07-03 00:00:00 324

原创 1936. 新增的最少台阶数

贪心思想:每次尽量跳到能跳的最远距离;区间分段:将距离diff分成不超过dist的小段;算法技巧:用整数除法//快速计算插入数量,避免循环模拟。这类题目虽然简单,但在面试中非常常见,建议熟练掌握。

2025-07-02 00:15:00 353

原创 1934. 确认率

连接操作(特别是LEFT JOIN)的理解;分组与条件聚合的掌握;空值处理与容错设计的能力;SQL 数学表达能力(如除法、保留小数等)的掌握。这种模式在业务数据分析中极为常见,如计算用户转化率、活动完成率等,非常值得掌握。

2025-07-02 00:00:00 928

原创 1930. 长度为 3 的不同回文子序列

这道题巧妙利用了长度为3回文的结构特性,避免了暴力枚举所有子序列,借助首尾相同字符和中间字符集合的思想高效统计结果。核心思路简洁且易于实现,代码清晰易懂,并且能处理长度较大的字符串。

2025-07-01 00:15:00 855

原创 1927. 求和游戏

本题的核心在于通过数学模型,将博弈过程中的复杂操作简化为判断一个简单的数学条件。理解问题的本质,避免爆炸的状态模拟。通过计数和数学推导,实现高效判断。体现了博弈论和数学分析在算法中的威力。

2025-07-01 00:00:00 873

原创 1922. 统计好数字的数目

偶数下标必须是偶数数字,共5种可能:{0,2,4,6,8}奇数下标必须是质数数字,共4种可能:{2,3,5,7}这意味着每个偶数位置可以独立选择5个数字,每个奇数位置可以独立选择4个数字。若指数的当前位为1,则将当前基数乘到结果中。基数每次平方,指数右移一位。重复直到指数为0。计算abmodma^b \mod mabmodm可高效完成。方法时间复杂度适用范围备注暴力枚举O10nO(10^n)O10nnnn很小不可行,指数爆炸。

2025-06-30 00:15:00 994

原创 1921. 消灭怪物的最大数量

先算出怪物到达时间按时间顺序消灭怪物在消灭顺序上检测是否怪物已经到达城市只要在每一步判断条件满足即可,简单明了且效率高。如果你在游戏设计或类似的场景中需要处理“有限资源按顺序处理多事件”的问题,这种思路非常有参考价值。

2025-06-30 00:00:00 723

原创 1915. 最美子字符串的数目

设mask为当前字符串奇偶状态的掩码:mask的第 i 位 = 1 表示对应字符出现奇数次,0 表示偶数次。对任意子串word[i..j]它的奇偶状态掩码 =其中表示从字符串开头到第 k 个字符的奇偶状态掩码。本题巧妙利用了异或掩码对字符奇偶次数的快速表示。通过前缀掩码和哈希表计数,可以高效统计符合「最多一个字符出现奇数次」的子字符串数量。此类思路不仅限于本题,对于其他奇偶性质的字符计数题目也非常有参考价值。

2025-06-29 03:15:00 779

原创 1914. 循环轮转矩阵

本题通过将二维矩阵按层分解为多个一维数组,再对数组进行旋转,巧妙简化了矩阵旋转的复杂度。代码结构清晰,易读易维护,且能应对较大 k 的情况。掌握此类“矩阵层遍历 + 一维旋转”技巧,对于解决类似环形数组操作及矩阵操作类问题非常有帮助。

2025-06-29 03:00:00 661

原创 1911. 最大交替子序列和

本题通过巧妙设计“偶数下标最大和”和“奇数下标最大和”两个状态变量,实现了对最大交替和子序列的高效求解。动态规划不仅让我们在 O(n) 时间内解决问题,也带来思路上的清晰与简洁,值得学习和掌握。

2025-06-28 00:15:00 647

原创 1910. 删除一个字符串中所有出现的给定子字符串

如何高效查找并删除子串?如何避免重复遍历?是选择语义直观的 API 方式,还是手动模拟底层逻辑以换取性能?如果面对较短的字符串或对执行效率不敏感,的方式已经足够使用。但若处理大规模字符串、或要求在性能敏感场景下运行,推荐使用栈模拟法,它可以将时间复杂度从 O(NM) 降为 O(N)。

2025-06-28 00:00:00 326

原创 1907. 按分类统计薪水

本题的核心考点在于「分类映射 + 分组计数 + 保证完整类别输出」。无论是使用 SQL 还是 Pandas,理解背后的逻辑都是最重要的。在实际开发中,选择哪种方法应根据你所处的工作流程、数据规模和任务需求来定。掌握这种技巧,不仅可以处理工资类问题,也适用于用户分群、商品定价区间分析、成绩等级划分等各种业务场景。

2025-06-27 00:15:00 618

原创 1906. 查询差绝对值的最小值

充分利用了题目中“数值范围固定”的特性。使用前缀和+频次统计,实现了高效多次区间查询。在大数据量场景中,优于排序法、暴力法数十倍。这道题是“数值范围优化 + 区间统计”题目的经典例子。熟练掌握这种技巧,可以在很多类似题中灵活应对。

2025-06-27 00:00:00 459

原创 1905. 统计子岛屿

给定两个大小相同的二维二进制矩阵grid1和grid2,矩阵元素仅包含 0(表示水域)和 1(表示陆地)。定义一个“岛屿”为由上下左右四个方向相邻的陆地格子(值为 1)组成的连通区域。如果grid2中的一个岛屿被grid1中的一个岛屿,也就是说grid2中该岛屿的每一个陆地格子在grid1中对应的位置都是陆地,则称该岛屿为“子岛屿”。**grid2**

2025-06-26 05:00:00 651

原创 1904. 你完成的完整对局数

方法跨午夜处理时间对齐处理实现简洁性效率转换为分钟法 ✅✅ 向分钟统一✅ 四舍五入对齐✅ 非常简洁💯相较于处理字符串切割和逐个小时判断,这种将时间统一为分钟数的方法不仅更加清晰,还能统一处理各种边界与跨日问题,属于高效解法的范例。这道题虽然简单,但考察了时间处理、取整边界、跨午夜处理等常见但容易出错的点。将时间统一成分钟是简化计算的关键,向上和向下对齐是计算完整区间数量的核心。希望你看完这篇文章后,能在实际问题中更加游刃有余地处理类似的时间窗口问题。

2025-06-26 04:45:00 983

原创 1901. 寻找峰值 II

本题的关键是利用二分查找策略,将二维问题降为一维搜索问题。按列二分和按行二分是对称的方法,根据矩阵形状选择合适方式。复杂度控制在O(m log n)或O(n log m),满足题目要求。此方法不仅适用于峰值查找,还可以扩展用于图像处理、山脉图、局部极值等相关问题中。

2025-06-26 04:30:00 390

原创 1899. 合并若干三元组以形成目标三元组

合并操作是“逐位取最大值”,因此构造出来的三元组只能越来越大。如果某个三元组的任意一位比目标的对应位还要大,则该三元组不可用,因为它可能会破坏目标值。为了构造[x, y, z],我们至少需要找到三个三元组:一个提供x,即某个三元组的第一个数为x一个提供y,即某个三元组的第二个数为y一个提供z,即某个三元组的第三个数为z这三个三元组的每一位都必须小于等于目标值才能被合并使用。对操作规则的精确理解;如何筛选出“有用”的候选项;如何通过逻辑变量记录目标的组成状态。三元组必须逐位不超过目标;

2025-06-26 04:15:00 903

原创 1898. 可移除字符的最大数目

该问题本质是对子序列判断的灵活应用。利用二分查找缩小搜索范围,将复杂度降低。判断子序列时,巧妙跳过被移除的字符,是关键点。

2025-06-26 04:00:00 1589

原创 1895. 最大的幻方

幻方是一种特别的矩阵结构,其每行、每列、主对角线、副对角线的和都相等。4 9 23 5 78 1 6这就是一个 3×3 的幻方,行列及对角线和都是 15。前缀和是数组中从开头到当前位置元素的累积和,可以快速求取任意区间和。在本题中,我们对行、列、主对角线、副对角线分别计算前缀和。通过利用多维前缀和,我们有效提升了判断幻方的效率。此技巧同样适用于类似的二维区域和问题。本题允许幻方中的数字重复,不要求唯一,简化了判断。如果对幻方内元素唯一性有要求,问题会更复杂,需要额外判断。

2025-06-26 03:45:00 837

原创 1894. 找到需要补充粉笔的学生编号

本题考查了循环消耗和余数的巧妙应用。直接模拟不现实,通过求和和取模,转化为在一轮消耗中判断剩余粉笔,显著优化了性能。该思路适用于类似存在周期性重复消耗的问题,掌握后可灵活应对。

2025-06-26 03:30:00 221

原创 1888. 使二进制字符串字符交替的最少反转次数

通过拼接字符串模拟所有旋转版本,避免了重复旋转的冗余计算。滑动窗口高效统计翻转次数,保证了线性时间复杂度。该解法适合大规模数据,且逻辑清晰易理解。这道题综合考察了字符串操作、模式匹配与滑动窗口技巧,是一个典型的字符串算法问题,掌握它能提升对字符串旋转与翻转类问题的理解。

2025-06-26 03:15:00 450

空空如也

空空如也

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

TA关注的人

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